如何在小数类型的结果中强制添加两位小数?

How to compulsorily add two decimals in result of type decimal?

Java(以及大多数语言)中的 decimal 数字将始终具有完整的精度。 Java 没有 10.010.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; 开始(它始终是完全精确的,实际上 x10.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)); }