3

我有一个需要浮动的程序。比如说,这个数字是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 个数字关闭)。任何想法为什么程序会这样做?

谢谢!

4

1 回答 1

3

在浮点表示中,每个位要么用于表示整数部分,要么用于表示数字的小数部分。整数部分(绝对值)越大,表示它所需的位数越多,因此您剩下的分数位数越少,从而有失去精度的风险。

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

于 2013-03-07T06:20:45.867 回答