python 3.14*10为什么结果不是31.4?

结果应该为31.4,输出却是31.400000000000002

    首先你想计算的是10进制的浮点数运算

    但是 蟒蛇 在底层运算的时候使用的是二进制算的

    浮点数转化为二进制数往往会得到一个无限数

    计算机的内存、cpu寄存器等等这些硬件单元都是有限的,只能表示有限位数的二进制位

    结果精度上自然就会出现你看到的这个问题,精度出现问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-23

因为算法,这是每个语言共有的问题,解决方法:

    用round,round(表达式,小数位数)

    用decimal模块:

from decimal import Decimal as dec

num=dec("3.14")*dec(10)#小数用字符串,整数直接写。

第2个回答  2020-04-22
这个是由于浮点数使用二进制表示的精度问题, 你可以看一下计算机中浮点数的表示方式
第3个回答  2020-04-22
你可以指定 输出的精度 ,或者 输出小数点后几位

print("3.14*10=%.1f" % (3.14*10))

输出结果
3.14*10=31.4
第4个回答  2020-04-22
你可能用了化学计算器,一般算出来的都不同
相似回答