python怎么避免浮点精度问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么避免浮点精度问题相关的知识,希望对你有一定的参考价值。

参考技术A python怎么避免浮点精度问题,只需要每次运算的时候设置小数点位数即可,希望我的回答对你有帮助。

JAVA 中出现double 及float计算丢失精度的问题,大家是怎么避免的

static void doubleErr()
double a1 = 9.959955;
double a2 = 1.01;
System.out.println("double类型产生了错误请看: " + (a1 - a2));

static void floatErr()
float f1 = 1.3284544f;
float f2 = 1.32f;
System.out.println("F1-F2 float浮点型产生了错误: " + (f1 - f2));

static void doubleErr()
double a1 = 9.959955;
double a2 = 1.01;
double a3 = a1 - a2;
DecimalFormat df = new DecimalFormat("#.000000");
System.out.println("double: " + df.format(a3));

static void floatErr()
float f1 = 1.3284544f;
float f2 = 1.32f;

BigDecimal n = new BigDecimal((f1 - f2));

BigDecimal n2 = n.setScale(7, BigDecimal.ROUND_FLOOR);

System.out.println("F1-F2 : " + n2);


这样就能格式化double,和控制float精度了。你试试。追问

谢谢,float仍然是错的?不知有何高招

参考技术A 用long类型来避免吧追问

long它不允许小数怎么办,讲讲你的解决办法

参考技术B 很多语言都是这样。浮点数在计算机中是有误差的。所以必须使用专门的方式计算。
在Java中,需要使用BigDecmal,而且需要在构造参数使用String类型。
参考技术C 可以String来处理 参考技术D 用long型的做

以上是关于python怎么避免浮点精度问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言中单精度和双精度浮点型数据的数值范围是多少?怎么算出来的?请大虾帮忙了!

什么叫单精度浮点型?什么叫双精度浮点型?

什么定义了python中的浮点精度?

浮点型数据的精度是啥意思

Python乘法失去浮点精度

Swift 中如何避免精度丢失