刚刚入门Python,1.89+2=3.8899999999999997这...


刚刚入门python,有佬知道这是什么问题吗?

没有问题 什么语言都是这样的

计算机处理浮点运算精度问题,正常的

java也是,都一样

计算机使用位表示小数,但是位的状态是有限的,小数是无限的,因此总有小数无法被精确表示,计算的过程中就产生误差

都一样,不仅仅Python,有需求用round呗

精度问题哈,你把两个数字都设置成float类型就能避免了

2进制没法表示0.1,只能无限接近

如果要解决的话,办法有挺多的
可以round限制精度

print(round(float(1.89) + float(2), 2))

可以用专门计算用的decimal

from decimal import Decimal
print(Decimal('1.89') + Decimal('2'))

可以用f字符串

result = float(1.89) + float(2)
print(f"{result:.2f}")

欢迎了解浮点数w

这个是因为小数在二进制浮点形式下没有精确的表示,如果有高精度的需求,可以看下decimal模块

这个我知道!计算机浮点精度的问题

浮点精度问题

问ai吧,这个问题你给个关键字 精度问题就好了

这是正常的,浮点精度

计算机基础知识

-_-||,这不是入门python,这是要入门计算机才行

IEEE 754 - 维基百科,自由的百科全书
这是维基的介绍

精度丢失

哈哈,我看到了我的影子