我有一个浮动的程序。例如,这个数字是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个数字关闭)。有什么想法为什么程序这样做?
谢谢!
答案 0 :(得分:2)
在浮点表示中,每个位用于表示整数部分或数字的小数部分。整数部分越大(绝对值),表示它所需的位越多,因此分数的位数就越少,从而有可能失去精度。
尝试分别存储整数部分和小数部分,或使用decimal