2017-12-09 4 views
3

分割後にfloor divisionとint()を適用した場合の出力が異なる場合があります。 理由を説明したり、具体的なケースを教えてください。分割後にfloor divisionとint()を適用する際に違いはありますか?

問題: INT(// b)はintに等しくない(/ B)

状況: は、bは、整数0 <ある< = 1E18

B

設定: のPython 3.4.3

注: 具体的なケースはオンライン裁判官のテストで作成されており、テストケースは公開されていないため、リストアップできません。

私はあなたの助けを願っています。 ありがとうございます。

答えて

5

具体例(Pythonの3.4.4シェルで):

>>> int(99999999999999999/100000000000000000) 
1 
>>> 99999999999999999//100000000000000000 
0 

(数学的)フロート除算の結果が非常に近い場合、数値浮動小数点除算結果を向けて丸められているので、これは整数に起こりますこの整数。

+0

これは良い例です – user1767754

+0

素晴らしい答えをありがとうございます。わかっている。 – sam

+0

ちなみに、問題の条件を// bからint(a // b)に変更しましたが、この質問と回答は依然として有効です。 – sam

関連する問題