我已阅读java网站上BigDecimal
用于货币.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
但是我们应该使用哪种舍入模式?这是最合适的,也是我们最广泛的
Aar*_*lla 49
没有"正确"模式,这取决于商业案例.例子:
RoundingMode.FLOOR
).RoundingMode.CEILING
).HALF_UP
RoundingMode的文档包含很多不同模式如何工作的例子.
要获得更好的答案,您必须告诉我们您想要达到的目标.
也就是说,它BigDecimal
是在Java中使用的正确类型,因为它可以保留任何精度,并且它允许您选择最适合您的情况的舍入模式.
Amo*_*ter 11
通常你会使用"half up"舍入,如下所示:
myBigDecimal.setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您将舍入到小数点后两位(大多数货币都使用,例如美元和美分,显然也有例外),并且您将围绕这样的值,即半分或更多将围绕而不到半分将向下舍入.有关更多详细信息,请参阅javadoc.
对于金融应用程序 ROUND_HALF_EVEN 是最常见的舍入模式。这种模式避免了偏见。但是对于显示,您应该使用 NumberFormat 类。本课程将处理不同货币金额的本地化问题。但 NumberFormat 只接受原语。因此,如果您可以接受转换为双精度的微小精度变化,请使用最后一个。
Bre*_*ker -10
您永远不应该对货币使用小数类型。使用整数类型。这可以保持准确性,避免与浮点数相关的舍入误差
当显示金额时,然后除以适当的因子以获得非整数部分。