[解決済み] 浮動小数点数を丸めずに文字列に変換する方法
2023-04-20 10:45:58
質問
説明するまでもない理由で、len()でカウントするためにfloatを文字列に変換する必要があるプログラムを作っています。しかし、str(float(x))では文字列に変換する際にxが丸められ、全体が狂ってしまいます。どなたか修正方法をご存じないでしょうか? 知りたい方は使用されているコードをどうぞ。
len(str(float(x)/3))
どのように解決するのですか?
浮動小数点数を扱う場合、ある種の丸めは避けられないことがよくあります。 これは、10の基数で正確に表現できる数が、常に2の基数(コンピュータが使用する)で正確に表現できるとは限らないからです。
たとえば
>>> .1
0.10000000000000001
この場合、.1が文字列に変換されるのは
repr
:
>>> repr(.1)
'0.10000000000000001'
Pythonはこの問題を回避するためにstr()を使うときに最後の数桁を切り落とすと思いますが、それは部分的な回避策であり、何が起こっているのかを理解するための代用にはなりません。
>>> str(.1)
'0.1'
四捨五入がどのような問題を引き起こしているのか、正確にはわかりません。 おそらく、出力をより正確に制御する方法として、文字列の書式設定を行う方がよいのではないでしょうか?
例
>>> '%.5f' % .1
'0.10000'
>>> '%.5f' % .12345678
'0.12346'
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜ割り算は整数に丸められるのか?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?