public class doublePrecision {
public static void main(String[] args) {
double total = 0;
total += 5.6;
total += 5.8;
System.out.println(total);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印:
11.399999999999
Run Code Online (Sandbox Code Playgroud)
我怎么才能打印(或能够用它)11.4?
我目前使用以下代码打印双:
return String.format("%.2f", someDouble);
Run Code Online (Sandbox Code Playgroud)
这很有效,除了Java使用我的Locale的小数分隔符(逗号),而我想使用一个点.是否有捷径可寻?
我随机选择了两个double数字:
double a = 7918.52;
double b = 5000.00;
Run Code Online (Sandbox Code Playgroud)
我希望2918.52从a - b.
嗯,它给了我一个结果2918.5200000000004,这看起来很奇怪。
print(a - b); // -> 2918.5200000000004
Run Code Online (Sandbox Code Playgroud)
但如果我改为double a,7918.54我将得到预期的结果2918.54。
有人可以向我解释为什么某些double值会导致意外的舍入问题而其他值则不会?