我无法理解为什么这段代码会重新调整10.0而不是10
Double inputDouble = Double.valueOf("10");
System.out.println(inputDouble);
要求是
如果我通过10.00,输出应该是10.00
如果我通过10.0,输出应为10.0
如果我通过10,输出应为10
是否可能并以一种干净的方式
答案 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
的另一个原因。