importjava.math.BigDecimal;publicclassDecimal{publicstaticvoidmain(String[]args)throwsException{Doublea=2999.985;BigDecimalb=newBigDecimal(a);doublef=b.setScale(2,BigDeci...
import java.math.BigDecimal;
public class Decimal {
public static void main(String[] args) throws Exception {
Double a = 2999.985;
BigDecimal b = new BigDecimal(a);
double f = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f);
System.out.println(new java.math.BigDecimal(Double.toString(199999.00*0.015)).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(new java.math.BigDecimal(Double.toString(199999.00*0.015)).setScale(3,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b2 = new BigDecimal(Double.toString(199999.00*0.015));
double f2 = b2.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f2);
}
输出分别是:
2999.99
2999.98
2999.985
2999.985
求问怎样才能将199999.00*0.015的结果变为2999.99?
展开
该博客探讨了在Java中如何使用BigDecimal进行高精度计算,避免浮点数运算的精度损失。示例代码展示了如何设置舍入模式以得到期望的结果,如将199999.00 * 0.015精确转换为2999.99。
5527

被折叠的 条评论
为什么被折叠?



