Java,Python数据失真怎么处理

1,Java 

当你进行java的四则运算的时候,尤其是double,float类型的,当小数点超过3位(具体多少位不太清楚)的时候,就会出现失真的情况(精度误差)

 

 

 

 所以,需要使用BigDecimal 函数来处理 

   public static void main(String[] args) {
        while (true) {
            double f, t;
            Scanner k = new Scanner(System.in);
            f = k.nextDouble();
            t = k.nextDouble();//这个就是输入了啦
            //System.out.println(f+t);
            BigDecimal bigDecimal1=new BigDecimal(Double.toString(f));//用string不会丢失double的精度
            BigDecimal bigDecimal2=new BigDecimal(Double.toString(t));
            System.out.println(bigDecimal1.add(bigDecimal2));//相加输出
            System.out.println(bigDecimal1.subtract(bigDecimal2));//相除
            System.out.println(bigDecimal1.divide(bigDecimal2, 2, RoundingMode.HALF_UP));//相除
            //divide(bigDecimal2,保留几位小数,舍入模式)
            System.out.println(bigDecimal1.multiply(bigDecimal2));//相乘
        }
    }

 

Python 

Python就很简单了,直接使用decimal库

from decimal import *
a = Decimal("4.212")
b = Decimal("5.412412")
c = a * b
print(c)

 

posted @ 2022-01-10 21:34  -或·彧-  阅读(152)  评论(0编辑  收藏  举报