我正在做一个计算,在调试时我发现了这个:
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)
请注意,这不是特定于除法 - 它也会影响其他算术运算符.
you are dividing 2 ints and casting to a double,
try
double num = 1d/252d;
Run Code Online (Sandbox Code Playgroud)