double[] arrayName = new double[10];
arrayName[0] = (14/49)*100;
Run Code Online (Sandbox Code Playgroud)
试图获得两个数字的百分比,14/49,并将结果添加到数组中.它返回的全部是0.0.如果我使用float而不是double,同样的事情.Java新手.
Jas*_*ray 11
无论是将ints转换为s double,还是仅使用doubles.
例如:
double[] arrayName = new double[10];
resultValue[0] = (14.0/49.0)*100;
Run Code Online (Sandbox Code Playgroud)
要么:
double[] arrayName = new double[10];
resultValue[0] = ((double)14/49)*100;
Run Code Online (Sandbox Code Playgroud)
你怎么看:
(double/double)*double
Run Code Online (Sandbox Code Playgroud)
JVM如何看待它
(int/int)*int
Run Code Online (Sandbox Code Playgroud)
来自JLS.int to double是一个扩大的转换.从§5.1.2开始:
扩展原始转换不会丢失有关数值总体大小的信息.
[...]
将int或long值转换为float,或将long值转换为double,可能会导致精度损失 - 也就是说,结果可能会丢失该值的一些最低有效位.在这种情况下,使用IEEE 754舍入到最接近模式(第4.2.4节)生成的浮点值将是整数值的正确舍入版本.
如果你用双文字替换其中一个(比如添加.0或投射其中一个,double你应该得到你期望的结果).
| 归档时间: |
|
| 查看次数: |
46699 次 |
| 最近记录: |