为什么双倍宽度= 50/110000; 输出是0.000000000000000?这是我的代码:double width = 50/110000;System.out.println("width ori is "+width );输出是: 0.00000000000怎么了 ?预期的产出必须是4.5454545454545455E-4任何人都可以向我解释原因吗?
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
因为你要划分两个整数,所以它只取整数部分(整数除法)。
在计算机程序中划分整数需要特别小心。一些编程语言,处理整数除法(即通过给出整数商作为答案)。所以答案是整数。
例子 :
In real life In Java
4/3 = 1.33333 4/3 = 1
25/12 = 2.083333 25/12 = 2
9/2 = 4.5 9/2 = 4
50/110000 = 0.000454545 50/110000 = 0
您可以使用其中一个(或两个但实际上没用)double来避免这种情况:
double width = (double)50/110000;
double width = 50d/110000;
double width = 50.0/110000;
眼眸繁星
TA贡献1873条经验 获得超9个赞
int/int
返回的结果你integer
。
所以小数部分被截断,导致你得到一个整数
你需要施放:
double width = (double)50/110000;
正如@Josh M指出的那样,您也可以尝试:
double width = 50d / 110000d;
添加回答
举报
0/150
提交
取消