Pythonでいくつかの大きな数を分割しようとしていますが、奇妙な結果が得られています
NStr = "7D5E9B01D4DCF9A4B31D61E62F0B679C79695ACA70BACF184518" \
"8BDF94B0B58FAF4A3E1C744C5F9BAB699ABD47BA842464EE93F4" \
"9B151CC354B21D53DC0C7FADAC44E8F4BDF078F935D9D07A2C07" \
"631D0DFB0B869713A9A83393CEC42D898516A28DDCDBEA13E87B" \
"1F874BC8DC06AF03F219CE2EA4050FA996D30CE351257287"
N = long(NStr, 16)
f2 = 476
fmin = N / float(f2)
print N - (fmin * float(f2))
これは期待どおりに出力さ0.0
れます。ただし、たとえば、コードを次のように変更した場合
fmin = N / float(f2)
fmin += 1
私はまだの出力を取得します0.0
10進数パッケージも使ってみました
fmin = Decimal(N) / Decimal(f2)
print Decimal(N) - (fmin * Decimal(f2))
しかし、それは私に次の出力を与えます-1.481136900397802034028076389E+280
私はPythonに大きな数を適切に処理する方法を教えていないと思いますが、ここからどこに行くべきか悩んでいます。
また、最終目標は計算することです。
fmin = ceil(N / float(f2))
できるだけ長く正確に