我用2种方法在Python 3.7中尝试了浮点乘法。方法1给我期望的输出为十进制值(4.995),但是方法2给我只有四舍五入的数字(5.0)。
a=float(1.11)
b=float(4.5)
print(float(a*b))
# output is 4.995
x=5.0/4.5 # Output for x=1.11
a=float(x)
b=float(4.5)
print(float(a*b))
# output is 5.0
在我的原始代码中,我想像方法2 (x = 5.0 / 4.5)中那样计算x值,我得到的x值为 1.11 ,但是如果我使用方法2 中的x变量进行浮点乘法,我得到的是四舍五入的数字 5.0 而不是 4.995 。因此,如何像方法1 中那样为方法2 操作获取小数?在此先感谢。
答案 0 :(得分:2)
第二种方法没有给出四舍五入的数字,重复5 / 4.5 = 1.111,这在python中的存储方式是通过二进制替换数字,因此在float中的四位中像这样,
0000000000000001.0001110001110001
vs 1.11,其存储方式更像这样
0000000000000001.000111000010100011
因此,在进行乘法运算时,需要进行一些位检查,发现顶部应该基本上是1.11111111重复并将其乘以5.0,请注意,这不是完整的详细说明,而是通俗易懂的。