你应该用什么舍入方法在Java中用钱?

Tom*_*ncy 2 java currency rounding

假设我在Java中有一个代表金钱的小数值.

绕过这些价值观的最佳方法是什么?

例如,如果我有一个基于税率计算的值,并且我最终得到的结果是,例如,5.3999999999999995作为税额,我应该将其舍入到2位小数,只需这样做:

double d = 5.3999999999999995
BigDecimal bd = new BigDecimal(d).setScale(2, RoundingMode.HALF_EVEN);
d = bd.doubleValue();
Run Code Online (Sandbox Code Playgroud)

产生货币价值:

5.40
Run Code Online (Sandbox Code Playgroud)

Tho*_*ews 7

大多数计算金钱的应用程序都不使用浮点(double,float); 它们使用代表较小单位的整数.例如,在美元中,货币可以用便士来代表,即1美元的1/100.

为了更好的准确性,您可能希望有一个整数代表1E-03("毫美元")或1E-06.这取决于诸如利息计算和您的精确度等问题.

  • 是的,使用浮点钱是不好的.不,没有开发浮点数来代表金钱.我认为科学计算与它有很大关系. (3认同)