3

フロートを取るプログラムがあります。たとえば、その数は です1353118103.108893381。数値は、渡されるより大きな文字列の一部であり、各引数は空白で区切られています。たとえばArg1 Arg2 1353118103.108893381 Arg3、プログラムに渡されるすべてのものになります。プログラムは入力を string に格納しますinps。次に、 を使用して各引数をリストに分割しinps.split(' ')ます。

だから私は今のようなものを持っていますfinput = ['Arg1', 'Arg2', '1353118103.108893381', 'Arg3']。私は今、浮動小数点数をいじりたいと思っています。ただ、浮動小数点数は現在文字列なので、浮動小数点数型に変換したいです。私は使用しますrinput = float(finput[2])。ただし、実行するprint "%.9f" % rinputと、出力が表示されます1353118103.108893394(最後の2つの数字はオフです)。プログラムがこれを行う理由はありますか?

ありがとう!

4

1 に答える 1

3

浮動小数点表現では、各ビットは数値の整数部分または小数部分を表すために使用されます。整数部分 (絶対値) が大きいほど、それを表すために必要なビット数が多くなるため、小数部のビット数が少なくなり、精度が失われる危険があります。

整数部分と小数部分を別々に保存するか、10 進数を使用してみてください

于 2013-03-07T06:20:45.867 に答える