Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2位小数的BigDecimal舍入模式_Java_Bigdecimal - Fatal编程技术网

Java 2位小数的BigDecimal舍入模式

Java 2位小数的BigDecimal舍入模式,java,bigdecimal,Java,Bigdecimal,使用BigDecimal我应该使用什么模式将下面的条件四舍五入到小数点 如果>=0.005美元,则四舍五入至0.01美元;如果金额

使用BigDecimal我应该使用什么模式将下面的条件四舍五入到小数点

如果>=0.005美元,则四舍五入至0.01美元;如果金额<0.005美元,则四舍五入至0.00美元


我应该使用
舍入模式。向上舍入一半吗?

我假设您希望将<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++中的用语用在我的货币类型上;