丢失小数位Java Double

时间:2014-02-28 15:19:14

标签: java

使用Java我得到一个奇怪的结果

Double width = super.getWidth()/(32);
System.out.println(super.getWidth() + "  " + width);

打印312 9.0

312/32应该是9.75?

3 个答案:

答案 0 :(得分:4)

假设super.getWidth()返回整数类型(intlong等),则在分割期间精度会丢失。当您将整数类型的值除以int时,只保留结果的整数部分,而丢弃小数部分。

除以32.0来解决问题:

double width = super.getWidth()/32.0;
System.out.println(super.getWidth() + "  " + width);

答案 1 :(得分:2)

你需要

Double width = super.getWidth()/(32.0);

当java编译器遇到原始代码时,它会看到两个整数,并返回一个整数。这样,它会看到一个整数和一个double,因此返回一个double。

答案 2 :(得分:1)

尝试

Double width = super.getWidth()/(32.0);
System.out.println(super.getWidth() + "  " + width);