9

Python でフロートのリストがあり、それを文字列に変換すると、次のようになります。

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]

これらのフロートは、私が作成したときの小数点以下が 2 桁でした (私はそう信じています)。

それから私は使用しました

str(mylist)

小数点以下 2 桁の文字列を取得するにはどうすればよいですか?

======================

より具体的に言えば、最終結果を文字列にして、区切り記号を保持したいのです。

"[1883.95, 1878.33, 1869.43, 1863.40]"

その後、いくつかの文字列操作を行う必要があります。たとえば+="!\t!"

@senshinに触発されて、たとえば次のコードが機能しますが、もっと良い方法があると思います

msg = "["

for x in mylist:
    msg += '{:.2f}'.format(x)+','

msg = msg[0:len(msg)-1]
msg+="]"
print msg
4

4 に答える 4

13

文字列の書式設定を使用して、目的の小数点以下の桁数を取得します。

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]
>>> ['{:.2f}'.format(x) for x in nums]
['1883.95', '1878.33', '1869.43', '1863.40']

フォーマット文字列{:.2f}は、「固定小数点数 ( f) を小数点以下 2 桁( ) で出力する」ことを意味し.2ます。str.format自動的に数値を正しく丸めます (最初に小数点以下 2 桁の数値を入力したと仮定します。この場合、浮動小数点エラーは丸めを台無しにするのに十分ではありません)。

于 2014-05-01T23:52:37.053 に答える
2
map(lambda n: '%.2f'%n, [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001])

map()2 番目の引数として渡された list/iterable 内の各要素に対して、最初の引数で渡された callable を呼び出します。

于 2014-05-01T23:53:22.300 に答える