前提
python3での大きな数値に対する切り捨て除算についてです。
17桁の下記の整数に対して除算を行い、その結果を整数値で得たいと考えていますが、floor division(//)を用いた結果と、除算の結果をint()およびmath.floor()で丸めた結果が異なっています。
floor division(//)で得た結果が正しいものですが、大きな桁数の計算でのみint(), math.floor()でこのような誤差が生じる原因がわからずにおります。
桁数の大きな計算において、切り捨て除算をする場合にはint()やmath.floor()を使用すべきではないのでしょうか。
おそらく何か基本的な知識が欠けているのかと思いますが、ご助言をいただけると幸いです。
実現したいこと
・大きな桁数の数値の切り捨て除算で正確な値を得たい
発生している問題・エラーメッセージ
31004073948099832 31004073948099832 31004073948099833
該当のソースコード
Python
1import math 2 3int_1 = 62008147896199666 4print(int(int_1 / 2)) 5print(math.floor(int_1 / 2)) 6print(int_1 // 2) 7 8
試したこと
3桁程度の計算であれば、当然いずれの方法でも正確な値が返ってきます。
補足情報(FW/ツールのバージョンなど)
Python 3.9.12

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/14 13:03
2022/12/15 00:53 編集
2022/12/16 09:43