【发布时间】:2013-01-12 06:36:41
【问题描述】:
我正在使用 decimalformat 将值格式化为 2 位小数
Ex : 200.0075 --> 200.00
Ex: 200.0050 --> 200.00
我使用的代码是:
DecimalFormat df = new DecimalFormat("#.##")
问题是
String value = df.format(200.0075) gives 200.01
和
String value = df.format(200.0050) gives 200.00
如何在 java 中使用 deciamlformat 仅获得 2 位小数。
【问题讨论】:
-
你的问题有点不清楚。您似乎希望两个值都被截断而不是四舍五入。是这样吗?
-
这比看起来要复杂得多。如果你从浮点值(float/double)开始,你有一个主要的问题会妨碍你。您想截断两位小数,但由于浮点是不精确的表示,您可以输入
200.17并发现最接近的浮点实际上是200.16999999974,截断后最终将是200.16。如果您的所有号码从头到尾都是BigDecimal,则不存在此问题。如果任何地方都有浮动,您会看到意想不到的结果。 -
如果您能澄清您是否使用浮点数以及您是否可以容忍像我描述的浮点伪影,这将非常有帮助。如果不能,则需要更复杂的方法,即使那样,也会有一些情况会产生意想不到的结果。