bonaking 发表于 2021-8-9 18:58:22

a+b

a = 1.01
b = 1
a+b=2.00999999998

bonaking 发表于 2021-8-9 18:59:30

为什么啊

大马强 发表于 2021-8-9 19:32:36

精度问题,正常现象

大马强 发表于 2021-8-9 19:35:53

你用下面这个就正常了
print(a+b)

bonaking 发表于 2021-8-9 20:19:38

大马强 发表于 2021-8-9 19:35
你用下面这个就正常了

谢谢,hhh

大马强 发表于 2021-8-9 20:20:38

bonaking 发表于 2021-8-9 20:19
谢谢,hhh

问题解决的话,请设置最佳答案

chinesestcx 发表于 2021-8-10 08:42:28

1.01 + 1这是十进制表示的方法,结果是2.01,但计算机内部使用二进制保存数字,整数部分好说就是10(二进制),小数部分 要采用乘2取整,顺排每回得到的整数的方法,接着用小数部分继续乘2取整,直到小数部分为0,然而 大部分十进制小数 不可能完整用二进制表示,所以,存在计算机中的二进制小数只是一个近似值,再将它转换为十进制小数,只能是一个近似的十进制数

chinesestcx 发表于 2021-8-10 08:44:51

chinesestcx 发表于 2021-8-10 08:42
1.01 + 1这是十进制表示的方法,结果是2.01,但计算机内部使用二进制保存数字,整数部分好说就是10(二进制 ...

就好比0.01 你永远无法用0.01 * 2将小数部分变为0,不过,python的官方文档指出,这个并不是语言的缺陷,而是二进制表示十进制的数的固有特性

3236654291 发表于 2021-8-12 09:30:54

用decimal函数运算
页: [1]
查看完整版本: a+b