gpt4 book ai didi

float 的 Python 舍入错误

转载 作者:IT老高 更新时间:2023-10-28 20:31:21 25 4
gpt4 key购买 nike

我不知道这是否是一个明显的错误,但是在运行 Python 脚本来改变模拟参数时,我意识到 delta = 0.29 和 delta = 0.58 的结果丢失了。在调查中,我注意到以下 Python 代码:

for i_delta in range(0, 101, 1):
delta = float(i_delta) / 100

(...)

filename = 'foo' + str(int(delta * 100)) + '.dat'

为 delta = 0.28 和 0.29 生成相同的文件,与 .57 和 .58 相同,原因是 python 返回 float(29)/100 作为 0.28999999999999998。但这不是系统性错误,并不是每个整数都会发生这种情况。所以我创建了以下 Python 脚本:

import sys

n = int(sys.argv[1])

for i in range(0, n + 1):
a = int(100 * (float(i) / 100))
if i != a: print i, a

而且我看不到发生此舍入错误的数字中的任何模式。为什么这些特定数字会发生这种情况?

最佳答案

任何不能由 2 的精确幂构成的数字都不能精确地表示为 float ;它需要近似。有时最接近的近似值会小于实际数字。

阅读 What Every Computer Scientist Should Know About Floating-Point Arithmetic .

关于 float 的 Python 舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com