Python:Float失去精度?

时间:2013-03-07 06:09:06

标签: python printing floating-point

我有一个浮动的程序。例如,这个数字是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(最后2个数字关闭)。有什么想法为什么程序这样做?

谢谢!

1 个答案:

答案 0 :(得分:2)

在浮点表示中,每个位用于表示整数部分或数字的小数部分。整数部分越大(绝对值),表示它所需的位越多,因此分数的位数就越少,从而有可能失去精度。

尝试分别存储整数部分和小数部分,或使用decimal