2017-05-27 6 views
0

INT(-9/8) -1 math.floor(-9/8) のPython 3、Math.floor

-2

期待通りに動作しますが、:

INT(-27185501994412122128269814042/1893973573) -14353686018623303680 math.floor(-27185501994412122128269814042/1893973573) -14353686018623303680通知マイナスでなければならない-1435368601862330368

どんな考え?どのように解決するか?

INT(-27185501994412122128269814042%1893973573) 1012149580> 0

+0

これは、除算と床の代わりに '//'除算演算子を使用する理由です。 '/'は浮動小数点演算であり、精度が失われています。 – user2357112

答えて

1

正しい割合が-14353686018623303214

として
-27185501994412122128269814042 - (-14353686018623303214*1893973573) 
= 1012149580 
< 1893973573 
であるように、結果は、両方の場合に間違っています

商は最初に浮動小数点形式に変換され、次に整数に戻されるため、もう一方の結果が得られます。

+0

を使用して解決しました。 from decimal import * getcontext()。prec = 30 int(math.floor(Decimal(op2)/ Decimal(op1)))) –