我正在处理一个涉及8位小数点计算物品价格的项目。
但有时计算结果会不同。
我尝试了一些样例,但得到了不同的计算结果:
我尝试了一些样例,但得到了不同的计算结果:
public static void main(String[] args) {
double value1 = 0.999939f * 0.987792f;
double value2 = 0.999939 * 0.987792;
double value3 = (double)0.999939f * 0.987792f;
System.out.println("value 1 : "+ value1);
System.out.println("value 2: "+ value2);
System.out.println("value 3 : "+ value3);
}
输出结果为:
value 1 : 0.9877317547798157
value 2 : 0.9877317446880001
value 3 : 0.9877317839126931
这三个结果是不同的。
我有些困惑。请问有人能够解释一下这里发生了什么吗?
谢谢。
我已经查看了一些已经回答的内容,但是我只想知道一些只使用浮点数和双精度浮点数计算的方法。否则我需要更改很多地方,这会很痛苦。
int
或long
(在你的情况下,long
会更好,因为你有很多小数位)。 - RealSkeptic