java + conversion String to double在小数后附加尾随零

时间:2014-03-28 11:37:56

标签: java

我无法理解为什么这段代码会重新调整10.0而不是10

Double inputDouble = Double.valueOf("10");  
System.out.println(inputDouble);

要求是 如果我通过10.00,输出应该是10.00
如果我通过10.0,输出应为10.0
如果我通过10,输出应为10

是否可能并以一种干净的方式

1 个答案:

答案 0 :(得分:5)

  

要求是如果我通过10.00,输出应该是10.00

然后你使用了错误的类型。 double没有有效数字的概念 - 10,10.0和10.00之间没有区别。

您应该尝试使用BigDecimal

System.out.println(new BigDecimal("10")); // Prints 10
System.out.println(new BigDecimal("10.0")); // Prints 10.0
System.out.println(new BigDecimal("10.00")); // Prints 10.00

除了其他任何内容,即使double 尝试保留无关紧要的数字,它也会考虑二进制数字,因为它是浮动的二进制点类型。如果您对您提供的实际十进制数字感兴趣,那么这是使用BigDecimal的另一个原因。