2014-03-28 127 views
-1

尾随零,我无法理解,为什么这个代码retursn 10.0,而不是10的java +将字符串转换为Double追加后小数

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

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

是有可能和在一个干净的方式

+1

'10.00' =='10.0' =='10',所以没有。 – Pshemo

回答

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的另一个原因。

+0

好吧,那么可以做些什么来删除/丢弃输出中的尾随零,它是Double类型的。所以Double inputDouble = Double.valueOf(“10”);返回10 –

+0

@Naroji:你可以使用['DecimalFormat'](http://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html)。 –

相关问题