Python: 浮点数失去精度?

3 投票
1 回答
4486 浏览
提问于 2025-04-17 18:14

我有一个程序,它接收一个浮点数。比如说,这个数字是 1353118103.108893381。这个数字是一个更长字符串的一部分,字符串中的每个参数之间用空格隔开。比如 Arg1 Arg2 1353118103.108893381 Arg3 就是传给程序的完整内容。程序把输入的内容存储在一个字符串 inps 里。接着,我用 inps.split(' ') 把每个参数分开,放到一个列表里。

现在我得到了像 finput = ['Arg1', 'Arg2', '1353118103.108893381', 'Arg3'] 这样的列表。我现在想对这个浮点数进行一些操作。不过,这个浮点数现在是一个字符串,所以我想把它转换成浮点数类型。我用 rinput = float(finput[2]) 来进行转换。但是,当我用 print "%.9f" % rinput 打印的时候,输出的结果是 1353118103.108893394(最后两个数字不对)。你知道为什么程序会这样吗?

谢谢!

1 个回答

3

在浮点数表示法中,每一位二进制数要么用来表示数字的整数部分,要么用来表示小数部分。如果整数部分的数值越大,你就需要更多的位数来表示它,这样留给小数部分的位数就会变少,这样就可能会失去精度。

可以尝试把整数部分和小数部分分开存储,或者使用decimal库。

撰写回答