c#中1/252 = 0?

loc*_*boy 18 c#

我正在做一个计算,在调试时我发现了这个:

double num = 1/252;
Run Code Online (Sandbox Code Playgroud)

当我调试它时,num被设置为零(0).是否有一个原因?我想把它作为实际计算.

谢谢

Jon*_*eet 30

是 - 该计算以整数运算执行.试试这个:

double num = 1.0 / 252.0;
Run Code Online (Sandbox Code Playgroud)

基本上,分配结果的变量类型不会影响正在执行的算术运算.将一个整数除以另一个整数的结果是整数; 如果要使用浮点运算,则需要使一个或其他操作数成为浮点类型.用文字做一个简单的方法就是在结尾贴上".0".另一种方法是使用d后缀:

double num = 1d / 252d;
Run Code Online (Sandbox Code Playgroud)

请注意,您只需要使一个操作数成为浮点值才能工作,但为了清楚起见,我可能会在这种情况下执行这两个操作.

当然,文字很容易做到,但对于其他表达式(变量,方法调用的结果等),你需要使用强制转换:

int x = 1;
int y = 252;
double num = (double) x / (double) y;
Run Code Online (Sandbox Code Playgroud)

同样,你只需要投出其中一个,所以这也可以:

int x = 1;
int y = 252;
double num = (double) x / y;
Run Code Online (Sandbox Code Playgroud)

请注意,这不是特定于除法 - 它也会影响其他算术运算符.

  • 或者,如果您有整数变量,则将其中一个变为双精度:(双精度)a/b. (6认同)

Jon*_*ier 9

1和252都是文字整数,因此计算使用整数数学.0是最接近的整数结果.使用1.0或252.0获取正确的double值.


Pha*_*bus 7

you are dividing 2 ints and casting to a double,

try

double num = 1d/252d;
Run Code Online (Sandbox Code Playgroud)