目次
1. 四捨五入を使用する
ホームページ バックエンド開発 Python チュートリアル Python で丸める 2 つの方法を学習しましたか?

Python で丸める 2 つの方法を学習しましたか?

May 02, 2023 pm 01:25 PM
パイソンの 4 つの家

1. 四捨五入を使用する

ほとんどの場合、小数点を保持するために四捨五入を使用しますが、これは私たちの数学的知識の規則に従っていません。

round(number[, ndigits])
ログイン後にコピー

round() は、次のルール (Python3) に従って数値 (通常は浮動小数点数) を丸めます (Python3):

ndigitals が 0 ではない場合について話しましょう:

予約桁の最後の桁が 4 以下の場合は、round(5.214,2) = 5.21

予約桁の最後の桁が 5 に等しい場合は、その桁を破棄します。 、桁の後に数字がありません。round(5.215,2) = 5.21

予約桁の最後の桁が 5 で、数字がある場合、桁上げはありません。桁の後には、round(5.2151,2) = 5.22

のように桁上げが行われます。予約桁の最後の桁が 6 以上の場合、桁上げが行われます。たとえば、round(5.216,2) = 5.22

>>> round(5.214,2)
5.21
>>> round(5.215,2)
5.21
>>> round(5.2151,2)
5.22
>>> round(5.216,2)
5.22
>>>
ログイン後にコピー

ただし、上記のルール 2 には次のような例外があります。

>>> round(0.645,2)
0.65
>>>
ログイン後にコピー

理由は、浮動小数点数は近似値しか表現できないためです。バイナリで表現すると 0.645 ですが、実際には Python は 0.645000000000000017763568394002504646778106689453125 を格納します。Python は IEEE754 標準に従って浮動小数点数を格納します。

ndigits が 0 または None の場合について話しましょう:

予約桁の最後の桁が 4 以下の場合、round(1.4 のように) 破棄されます。 ) = 1

予約桁の最後の桁が 5 で、その後に数字がない場合は、round(1.5)=2、round(2.5) のように、最も近い偶数が採用されます。 =2

予約桁の最後の桁が次の場合、ビットが 5 に等しく、その後に桁がある場合、round(2.51)=3## のように、近い桁が使用されます。

#予約桁の最後の桁が 6 以上の場合、その桁は繰り上げられます。たとえば、round(1.6) = 2

>>> round(1.5)
2
>>> round(1.4)
1
>>> round(1.6)
2
>>> round(2.5)
2
>>> round(2.51)
3
>>>
ログイン後にコピー

f 文字列の保持された結果は、round:

>>> f"{1.5:.0f}"
'2'
>>> f"{2.5:.0f}"
'2'
>>> f"{2.51:.0f}"
'3'
ログイン後にコピー

と一致することに注意してください。それでは、数学的な丸め規則と一致するメソッドを取得するにはどうすればよいでしょうか。方法 2:

2 を使用してください。Decimal

を使用するには前提条件があります。つまり、浮動小数点数を正確に表現できるように、最初に 10 進数を文字列に変換する必要があります。 。

import decimal

# 修改舍入方式为四舍五入
decimal.getcontext().rounding = "ROUND_HALF_UP"

x = "0.645"
x1 = decimal.Decimal(x).quantize(decimal.Decimal("0.00"))
print(f"{x} 的近似值为 {x1}")
y = "2.5"
y1 = decimal.Decimal(y).quantize(decimal.Decimal("0"))
print(f"{y} 的近似值为 {y1}")
ログイン後にコピー

上記のプログラムの出力は次のとおりです:

0.645 的近似值为 0.65
2.5 的近似值为 3
ログイン後にコピー
これは数学的な丸めに完全に準拠しています。

最後に

浮動小数点数は2進数表現では近似値しか表現できませんが、この点については文献[1]を確認してください。浮動小数点数の表現を理解すると、四捨五入を見てもそれほど違和感はなくなります。

参考文献

[1]ドキュメント: https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues

以上がPython で丸める 2 つの方法を学習しましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

正規表現とは何ですか? 正規表現とは何ですか? Mar 20, 2025 pm 06:25 PM

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

Pythonの仮想環境の目的を説明してください。 Pythonの仮想環境の目的を説明してください。 Mar 19, 2025 pm 02:27 PM

この記事では、Pythonにおける仮想環境の役割について説明し、プロジェクトの依存関係の管理と競合の回避に焦点を当てています。プロジェクト管理の改善と依存関係の問題を減らすための作成、アクティベーション、およびメリットを詳しく説明しています。

See all articles