首页 > 解决方案 > 如何在十进制类型的结果中强制添加两位小数?

问题描述

标签: javanumber-formatting

解决方案


Java(和大多数语言)中的decimal数字将始终具有完全精度。Java 没有不同事物10.0的概念。10.00所以如果我写:

double x = 10.0;

那么x其实就是10.0000000000000....

精确精度的细节出奇的复杂,而且很大程度上无关紧要,所以我不会在这里详细介绍,但对于日常使用来说已经绰绰有余了。)

您可以做的是将 double显示为字符串,四舍五入到小数点后 2 位,如下所示:

String str = String.format(".2f", x);

在这种情况下str"10.00". 还有很多其他的选择String.format(),我建议你搜索例子!请注意,结果是一个字符串,而不是一个数字,所以你现在不能做str+2.0任何类似的数学运算。这意味着当您想要输出/显示结果时必须进行格式化。

您可以做的另一件事是将双精度数入到小数点后 2 位:

double y = Math.round(x * 100.0) / 100.0;

结果仍将具有完全精度,但该Math.round()函数会将数字四舍五入为最接近的整数。因此,如果我一开始是x=10.3494;(它总是完全精确,实际上x10.34940000...),那么y现在是10.3500000...


推荐阅读