java BigDecimal中的十进制更改6.51到6.50
这就是我们尝试过的,但这些都不起作用
BigDecimal Total_Discount=new BigDecimal(10.00);
BigDecimal Amount_To_User=new BigDecimal(00.00);
BigDecimal Amount_To_Me=new BigDecimal(00.00);
Amount_To_User=Total_Discount.multiply(new BigDecimal(0.65)).setScale(2,BigDecimal.ROUND_UP); //65% of the amount
Amount_To_Me=Total_Discount.multiply(new BigDecimal(0.35)).setScale(2,BigDecimal.ROUND_UP); //35% of the amount
Dividing the values by % 65 and 35 so 10 will be 6.50 and 3.50 but i am getting 6.51 by using BigDecimal.DOWN i am getting 6.50 i have already values with 6.51 which i need to change to 6.50
Amount_To_User=Amount_To_User.setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(Amount_To_User); //Gives the value 6.51
我想把6.51改成6.50,但这行不通
# 1 楼答案
TL;DR:使用
BigDecimal.ROUND_HALF_UP
作为舍入模式和/或使用字符串作为输入而不是双精度来创建一个BigDecimal解释
比较文档。以下是你想要的:
与你用过的相比
你总是围着我转。还有一个需要舍入的小数位,因为您使用双精度作为输入来创建BigDecimal(参见下面的示例)
此外,您应该根据字符串输入而不是双精度输入创建大小数。对构造函数中的值使用引号
"
这将告诉你为什么:
当字符串具有双精度时,双精度并非对每个十进制数字都有完美的精度