【发布时间】:2013-11-21 00:02:11
【问题描述】:
我有一个 Double 对象,它在转换为 long 值时会丢失确切的值。
Double d = 1.14*100
System.out.println(d.longValue());
上述语句将打印:113。
我想打印114。
谢谢
【问题讨论】:
-
浮点数不准确。你要先四舍五入吗?
-
请注意,您认为的 Double 值 114 实际上可能在内部是 113.99999999...,而您的代码最终只是截断了小数部分。正如 Tim S 建议的那样,您需要合并四舍五入。
-
如果你想防止你的代码失去精度,你可能应该使用
BigDecimal。 -
同意@Pshemo -- 除非有充分的理由使用
Double,否则使用BigDecimal会更好。
标签: java