如何在小数类型的结果中强制添加两位小数?
How to compulsorily add two decimals in result of type decimal?
- 结果必须有两位小数(ex: 10.56, 34.56).
- 在我的例子中:10.0 应该是 10.00,10.5 应该是 10.50,10.3494 应该是 10.35.
Java(以及大多数语言)中的 decimal
数字将始终具有完整的精度。 Java 没有 10.0
和 10.00
是不同事物的概念。所以如果我写:
double x = 10.0;
那么x
其实就是10.0000000000000....
(exact 精度的细节是 surprisingly complicated 并且在很大程度上是无关紧要的,所以我不会在这里深入讨论,但对于日常使用来说已经绰绰有余了.)
你可以做的是显示一个双精度字符串,四舍五入到小数点后两位,像这样:
String str = String.format(".2f", x);
在这种情况下 str
将是 "10.00"
。 String.format()
还有很多其他选项,我建议你search for examples!请注意,结果是一个字符串,而不是一个数字,因此您现在不能执行 str+2.0
或任何类似的数学运算。这意味着当您想要输出/显示结果时必须进行格式化。
您可以做的另一件事是四舍五入小数点后两位:
double y = Math.round(x * 100.0) / 100.0;
结果仍具有完整精度,但 Math.round()
函数会将数字四舍五入为最接近的整数。因此,如果我从 x=10.3494;
开始(它始终是完全精确的,实际上 x
是 10.34940000...
),那么 y
现在将是 10.3500000...
.
如果字符串格式的固定精度足以让您使用 num.toFixed(2)
,在您的情况下 10.3494 变为“10.35”。
这段代码对我有用!
public static void main(String[] args) throws Exception {
String Input="75.74306816000052";
String Input2 = "26.9";
BigDecimal Output= new BigDecimal(Input).setScale(2, RoundingMode.HALF_EVEN);
System.out.println(Output.setScale(2));
BigDecimal Output2= new BigDecimal(Input2).setScale(2, RoundingMode.HALF_EVEN);
System.out.println(Output2.setScale(2)); }
- 结果必须有两位小数(ex: 10.56, 34.56).
- 在我的例子中:10.0 应该是 10.00,10.5 应该是 10.50,10.3494 应该是 10.35.
Java(以及大多数语言)中的 decimal
数字将始终具有完整的精度。 Java 没有 10.0
和 10.00
是不同事物的概念。所以如果我写:
double x = 10.0;
那么x
其实就是10.0000000000000....
(exact 精度的细节是 surprisingly complicated 并且在很大程度上是无关紧要的,所以我不会在这里深入讨论,但对于日常使用来说已经绰绰有余了.)
你可以做的是显示一个双精度字符串,四舍五入到小数点后两位,像这样:
String str = String.format(".2f", x);
在这种情况下 str
将是 "10.00"
。 String.format()
还有很多其他选项,我建议你search for examples!请注意,结果是一个字符串,而不是一个数字,因此您现在不能执行 str+2.0
或任何类似的数学运算。这意味着当您想要输出/显示结果时必须进行格式化。
您可以做的另一件事是四舍五入小数点后两位:
double y = Math.round(x * 100.0) / 100.0;
结果仍具有完整精度,但 Math.round()
函数会将数字四舍五入为最接近的整数。因此,如果我从 x=10.3494;
开始(它始终是完全精确的,实际上 x
是 10.34940000...
),那么 y
现在将是 10.3500000...
.
如果字符串格式的固定精度足以让您使用 num.toFixed(2)
,在您的情况下 10.3494 变为“10.35”。
这段代码对我有用!
public static void main(String[] args) throws Exception { String Input="75.74306816000052"; String Input2 = "26.9"; BigDecimal Output= new BigDecimal(Input).setScale(2, RoundingMode.HALF_EVEN); System.out.println(Output.setScale(2)); BigDecimal Output2= new BigDecimal(Input2).setScale(2, RoundingMode.HALF_EVEN); System.out.println(Output2.setScale(2)); }