Python: 浮点数失去精度?
我有一个程序,它接收一个浮点数。比如说,这个数字是 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库。