checkily 发表于 2018-3-1 12:13:10

python 奇怪的情况,是我某一节没听好吗?



如图,b的值为什么会这样?要怎么才正常??

BngThea 发表于 2018-3-1 12:42:54

b的值是正常的,因为计算机本来就存在误差,无法“完全正确”
但是并不影响实际的计算和编程逻辑

keep_silent 发表于 2018-3-1 13:04:16

我记得以前学c语言的时候也有这个,刚才测试了一下,比如b=1/3然后你再*3,结果在c里面是0.99999999而不是1.(用python计算是1),就像是整形和浮点型之间的转换,会有一点不同。传统整数除法会舍去小数部分,返回一个整型。如果操作数之一是浮点型,则执行真正的除法。
比如: >>> 5/0.3
16.666666666666668
>>> 3/float(5)
0.6
建议这类计算设置保留位数

Zerone龍 发表于 2018-3-1 15:06:49

问题出在计算机进行计算时,需要转化为二进制,1.8转化的时候误差就产生了,所以是正常现象

checkily 发表于 2018-3-1 15:07:50

BngThea 发表于 2018-3-1 12:42
b的值是正常的,因为计算机本来就存在误差,无法“完全正确”
但是并不影响实际的计算和编程逻辑

那我要怎么能令b的值只保留小数后两位

BngThea 发表于 2018-3-1 15:11:23

checkily 发表于 2018-3-1 15:07
那我要怎么能令b的值只保留小数后两位

无法设置,你可以在输出时设置格式
比如"%.2f"%b
页: [1]
查看完整版本: python 奇怪的情况,是我某一节没听好吗?