Java 2位小数的BigDecimal舍入模式
使用BigDecimal我应该使用什么模式将下面的条件四舍五入到小数点 如果>=0.005美元,则四舍五入至0.01美元;如果金额<0.005美元,则四舍五入至0.00美元Java 2位小数的BigDecimal舍入模式,java,bigdecimal,Java,Bigdecimal,使用BigDecimal我应该使用什么模式将下面的条件四舍五入到小数点 如果>=0.005美元,则四舍五入至0.01美元;如果金额
我应该使用
舍入模式。向上舍入一半吗?我假设您希望将<0.005舍入到0.00,并将>0.005舍入到0.01
BigDecimal bd = new BigDecimal(0.004999);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
我假设您希望将<0.005取整为0.00,并将>0.005取整为0.01
BigDecimal bd = new BigDecimal(0.004999);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
aa如果金额==0.005
怎么办?(还有,为什么0.004
应该变成0.01
,但是0.006
应该变成0.00
,不是相反吗?)。使用整数值美分。@Michael:这种方法可行,但有些货币(突尼斯第纳尔)在大的东西中有1000个小东西。比特币有8位小数。有些甚至连一点东西都没有(日元)。因此,使用大十进制可能是正确的。@Bathsheba。大小数仍然不是正确的使用方法。即使小单位是大单位的1e-6,也应该使用整数,因为不存在小分数units@MadPhysicist:见。虽然我认为我不应该把我在C++中的用语用在我的货币类型上;aa如果金额==0.005
怎么办?(还有,为什么0.004
应该变成0.01
,但是0.006
应该变成0.00
,不是相反吗?)。使用整数值美分。@Michael:这种方法可行,但有些货币(突尼斯第纳尔)在大的东西中有1000个小东西。比特币有8位小数。有些甚至连一点东西都没有(日元)。因此,使用大十进制可能是正确的。@Bathsheba。大小数仍然不是正确的使用方法。即使小单位是大单位的1e-6,也应该使用整数,因为不存在小分数units@MadPhysicist:见。虽然我认为我不应该把我在C++中的用语用在我的货币类型上;