ホームページ バックエンド開発 Python チュートリアル Pythonで割り算を使うときの注意点

Pythonで割り算を使うときの注意点

Jun 16, 2016 am 08:42 AM
python 予防 分割

この記事の例では、Python で除算を使用する際の注意事項を説明します。これは非常に重要なスキルであり、Python プログラミングにとって良い参考になります。具体的な分析は次のとおりです。

次に、次の例を見てください:

1

2

3

4

5

def avg(first, *rest):

  return (first + sum(rest)) / (1 + len(rest))

# Sample use

avg(1, 2)    # 1.5

avg(1, 2, 3, 4) # 2.5

ログイン後にコピー

ソース プログラムは可変長パラメーターの使用を示すためのものですが、Python 2.7.1 インタープリターでは、得られる結果はコメントの結果と異なります

1

2

3

4

5

6

7

>>> def avg(first, *rest):

...   return (first + sum(rest)) / (1 + len(rest))

... 

>>> avg(1, 2)

1

>>> avg(1, 2, 3, 4)

2

ログイン後にコピー

小数点以下のデータは切り捨てられるのがよくわかりますが、2つの整数を割るときは「//」を四捨五入する必要があると記憶しています。

1

2

3

4

5

6

7

>>> def avg(first, *rest):

...   return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//'

... 

>>> avg(1, 2)

1

>>> avg(1, 2, 3, 4)

2

ログイン後にコピー

「/」を「//」に変更しても結果は同じになります。「//」は確かに丸められていると記憶していますが、「/」の結果も切り捨てられるのはなぜですか?

3.4.1 インタープリターで同じプログラムをテストし、期待どおりの結果が得られました。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

>>> def avg(first, *rest):

...   return (first + sum(rest)) / (1 + len(rest))

... 

>>> avg(1, 2)

1.5

>>> avg(1, 2, 3, 4)

2.5

>>> def avg(first, *rest):

...   return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//'

... 

>>> avg(1, 2)

1

>>> avg(1, 2, 3, 4)

2

ログイン後にコピー

3.4.1 インタープリタでは、「/」の結果は小数点以下の桁を保持し、「//」は四捨五入後の結果であることがわかります。

検索した結果、stackoverflow で次の質問を見つけました: Python で除算の結果を浮動小数点数に強制する方法は? これはバージョン 2.x 用であり、3.x ではそのような問題は発生しないことに注意してください
答えの最初の 2 つの解決策はどちらも適切です:

方法 1:

1

2

3

4

5

6

>>> from __future__ import division

>>> a = 4

>>> b = 6

>>> c = a / b

>>> c

0.66666666666666663

ログイン後にコピー

方法 2:

C 言語のアプローチと同様:

1

c = a / float(b)

ログイン後にコピー

この記事で説明した例は、皆様の Python プログラミングに確実に役立つと信じています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

テンプレートのメリットとデメリットは何ですか? テンプレートのメリットとデメリットは何ですか? May 08, 2024 pm 03:51 PM

テンプレートのメリットとデメリットは何ですか?

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Jul 01, 2024 am 07:22 AM

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます May 06, 2024 pm 03:52 PM

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

どうやって彼にdeepseekに尋ねますか

評価関数の保存方法 評価関数の保存方法 May 07, 2024 am 01:09 AM

評価関数の保存方法

DeepSeekを検索する方法 DeepSeekを検索する方法 Feb 19, 2025 pm 05:18 PM

DeepSeekを検索する方法

See all articles