Python 2.7が誤った上限値を報告するのはなぜですか?

Catsunami

最近、1つのスクリプトを3.4からPython 2.7を使用するように移行しました(同僚の要求により)。math.ceil関数が同じように機能しないことがわかりました...

5/2を除算し、math.ceil()で切り上げると、math.ceil(5/2)= 3になると予想されます。

次のコードが与えられます:

from __future__ import print_function
import math

a = 5
b = 2
c = math.ceil(a/b)

print("Ceiling output: {}".format(c))

Python 2.7は答えとして2を報告し、Python3.4は予想どおり3を報告します。

どうしてこれなの?

私は私が投げた場合、私は仕事に2.7を取得することができます知っているab通りfloat

c = math.ceil(float(a)/float(b)

ただし、ディビジョンのキャストも機能しません。

c = math.ceil(float(a/b))

3.4はこれをどのように回避しますか?

これを見つけると、2.7バージョンのスクリプトでどのくらいの計算を再チェックする必要があるのか​​疑問に思います。

泳ぐ

これ/は、Python2.7では除算演算子が整数除算であるためです。関数の引数は関数呼び出しの前に完全に評価されるため、ここでmath.ceilは実際には無実の傍観者であったことに注意してください。

math.ceil(5/2)  # same as math.ceil(2)!

2.7でPython3の動作を取得するには、futureステートメントを使用します。

from __future__ import division

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonで2回目の入力を行った後、辞書の値が更新されないのはなぜですか?

分類Dev

操作2 ** 2 ** 2 ** 2 ** 2 ** 2によってPythonがハングするのはなぜですか?

分類Dev

この誤ったPython形式が例外ではなくこの結果を生成するのはなぜですか?

分類Dev

b '\ x02'がPythonの値2またはint(2)と同じでないのはなぜですか?

分類Dev

Python 2で ''> 0がTrueになるのはなぜですか?

分類Dev

Python 2-ord()が誤った値を返す

分類Dev

Pythonでn = [1,2,3,4,5,6,7,8]、n [:6:-2]が[8]であるのはなぜですか?

分類Dev

Python:ヒープが誤った最初のポップを与えるのはなぜですか?

分類Dev

pythonなぜmax(max(float_2d_array))が間違った答えを出すのですか?

分類Dev

Retrofit2:サーバーの応答に問題がなく、GSONが解析の問題を報告しなかった場合、オブジェクトがnullになるのはなぜですか?

分類Dev

2回押すと、キーコードではなく誤った値のキーコードが返されるのはなぜですか?

分類Dev

django2がpython2で利用できるのはなぜですか?

分類Dev

PythonのR ^ 2値が出力として負の整数を返すのはなぜですか?

分類Dev

JavaScriptでこの誤ったアラート(5> 3> 2)が発生するのはなぜですか?

分類Dev

このargparseコードがPython2と3で異なる動作をするのはなぜですか?

分類Dev

mingw / pacmanで、harfbuzzがPythonを必要とするglib2を必要とするのはなぜですか?

分類Dev

2つの異なるPythonラムダが同じバイトコードを持っているのはなぜですか?

分類Dev

Pythonが「1is1 ** 2」を「1000is10 ** 3」と異なる方法で処理するのはなぜですか?

分類Dev

Pythonで2つの比較のために3つの出力があるのはなぜですか?

分類Dev

コードが1つしか要求しないのに、valgrindが2つのメモリ割り当てを報告するのはなぜですか?

分類Dev

Pythonで2番目のforループが最初のforループを上書きするのはなぜですか?

分類Dev

Pythonが2行ごとに1行間違ってエンコードされた行を書き込むのはなぜですか?

分類Dev

この正規表現がPythonとJavascriptで2つの異なる結果をもたらすのはなぜですか?

分類Dev

Pythonで(1 == 2!= 3)がFalseと評価されるのはなぜですか?

分類Dev

Python 3.7のasyncio.Futureを待機すると、値/例外が設定されるのを待つのではなく、例外が報告されるのはなぜですか?

分類Dev

Pythonがこれら2つの変数を同じ場所に保存するのはなぜですか?

分類Dev

このPython2コードがCrcFile.compareで「閉じたファイルへのアクセス」エラーを生成するのはなぜですか?

分類Dev

なぜresize2fsが間違った情報を教えてくれるのですか

分類Dev

HTTP /1.1接続がHTTP / 2 RESET_STREAMコマンドを発行しているとWiresharkが報告するのはなぜですか?

Related 関連記事

  1. 1

    Pythonで2回目の入力を行った後、辞書の値が更新されないのはなぜですか?

  2. 2

    操作2 ** 2 ** 2 ** 2 ** 2 ** 2によってPythonがハングするのはなぜですか?

  3. 3

    この誤ったPython形式が例外ではなくこの結果を生成するのはなぜですか?

  4. 4

    b '\ x02'がPythonの値2またはint(2)と同じでないのはなぜですか?

  5. 5

    Python 2で ''> 0がTrueになるのはなぜですか?

  6. 6

    Python 2-ord()が誤った値を返す

  7. 7

    Pythonでn = [1,2,3,4,5,6,7,8]、n [:6:-2]が[8]であるのはなぜですか?

  8. 8

    Python:ヒープが誤った最初のポップを与えるのはなぜですか?

  9. 9

    pythonなぜmax(max(float_2d_array))が間違った答えを出すのですか?

  10. 10

    Retrofit2:サーバーの応答に問題がなく、GSONが解析の問題を報告しなかった場合、オブジェクトがnullになるのはなぜですか?

  11. 11

    2回押すと、キーコードではなく誤った値のキーコードが返されるのはなぜですか?

  12. 12

    django2がpython2で利用できるのはなぜですか?

  13. 13

    PythonのR ^ 2値が出力として負の整数を返すのはなぜですか?

  14. 14

    JavaScriptでこの誤ったアラート(5> 3> 2)が発生するのはなぜですか?

  15. 15

    このargparseコードがPython2と3で異なる動作をするのはなぜですか?

  16. 16

    mingw / pacmanで、harfbuzzがPythonを必要とするglib2を必要とするのはなぜですか?

  17. 17

    2つの異なるPythonラムダが同じバイトコードを持っているのはなぜですか?

  18. 18

    Pythonが「1is1 ** 2」を「1000is10 ** 3」と異なる方法で処理するのはなぜですか?

  19. 19

    Pythonで2つの比較のために3つの出力があるのはなぜですか?

  20. 20

    コードが1つしか要求しないのに、valgrindが2つのメモリ割り当てを報告するのはなぜですか?

  21. 21

    Pythonで2番目のforループが最初のforループを上書きするのはなぜですか?

  22. 22

    Pythonが2行ごとに1行間違ってエンコードされた行を書き込むのはなぜですか?

  23. 23

    この正規表現がPythonとJavascriptで2つの異なる結果をもたらすのはなぜですか?

  24. 24

    Pythonで(1 == 2!= 3)がFalseと評価されるのはなぜですか?

  25. 25

    Python 3.7のasyncio.Futureを待機すると、値/例外が設定されるのを待つのではなく、例外が報告されるのはなぜですか?

  26. 26

    Pythonがこれら2つの変数を同じ場所に保存するのはなぜですか?

  27. 27

    このPython2コードがCrcFile.compareで「閉じたファイルへのアクセス」エラーを生成するのはなぜですか?

  28. 28

    なぜresize2fsが間違った情報を教えてくれるのですか

  29. 29

    HTTP /1.1接続がHTTP / 2 RESET_STREAMコマンドを発行しているとWiresharkが報告するのはなぜですか?

ホットタグ

アーカイブ