Python で数値を丸めるにはどうすればよいですか?

Python で数値を丸めるにはどうすればよいですか?

この記事では、Python で数値を丸める方法について、適切な方法と例を示して説明します。 切り上げる方法 パイソン

例:

  Input:   3.5   Output:   4   Explanation:   Nearest whole number.   Input:   3.74   Output:   3.7   Explanation:   Rounded to one decimal place. 

Python での数値の切り上げ

数値を四捨五入するとは、値をそのまま維持しながら次の数値に近づけることで、数値を単純化することを意味します。 Python では数値を丸めるさまざまな方法がありますが、ここでは一般的に使用されるいくつかの方法について説明します。 Pythonで切り上げる方法 , Pythonを使ってこの記事で取り上げるポイントは以下のとおりです。

  • 組み込みのround()関数の使用
  • 使用する 切り捨て コンセプト
  • 使用する Math.ceil() そして Math.floor() 機能
  • 使用する 数学.天井
  • 使用する 数学の床
  • の使用 numpy> モジュール
  • の使用 丸め バイアスの概念
  • Python でゼロから半分を四捨五入する

Python u の丸め数 歌う 内蔵 ラウンド() 関数

Python には組み込みのものがあります。 Round()関数 数値を指定された桁数に四捨五入します。関数round()は、nとn桁の2つの数値引数を受け入れ、数値nをn桁に四捨五入して返します。四捨五入の桁数が指定されていない場合、関数は指定された数値 n を最も近い整数に四捨五入します。

例 : この例では、以下のコードは整数と浮動小数点数に対する `round()` 関数を示しています。また、小数点以下 2 桁への四捨五入も示し、次の桁が 5 である場合、5 より大きい場合、および 5 より小さい場合を示します。

Python3




# For integers> print> (> round> (> 11> ))> # For floating point> print> (> round> (> 22.7> ))> # if the second parameter is present> # when the (ndigit+1)th digit is =5> print> (> round> (> 4.465> ,> 2> ))> > # when the (ndigit+1)th digit is>=5>>

出力:

11 23 4.46 4.48 4.47 

Python u の丸め数 歌う 切り捨て コンセプト

この関数では、指定された位置以降の各桁が 0 に置き換えられます。 切り詰め() 関数 正の数値だけでなく負の数値でも使用できます。切り捨て関数は次の方法で実装できます。

  • 数値に 10^p を掛ける (10 の p の累乗) 番目 power) を使用して、小数点 p 桁を右にシフトします。
  • int() を使用して、新しい数値の整数部分を取得します。
  • 小数点 p を 10^p で割って左にシフトします。

Python3




# defining truncate function> # second argument defaults to 0> # so that if no argument is passed> # it returns the integer part of number> def> truncate(n, decimals> => 0> ):> > multiplier> => 10> *> *> decimals> > return> int> (n> *> multiplier)> /> multiplier> print> (truncate(> 16.5> ))> print> (truncate(> -> 3.853> ,> 1> ))> print> (truncate(> 3.815> ,> 2> ))> # we can truncate digits towards the left of the decimal point> # by passing a negative number.> print> (truncate(> 346.8> ,> -> 1> ))> print> (truncate(> -> 2947.48> ,> -> 3> ))>

出力:

16.0 -3.8 3.81 340.0 -2000.0 

Python u の丸め数 歌う Math.ceil() そして Math.floor() 機能

数学 天井() : この関数は、指定された数値以上の最も近い整数を返します。
Math.floor() : この関数は、指定された数値以下の最も近い整数を返します。

: この例では、以下のコードは `math` ライブラリを利用して、`math.ceil` で正と負の小数の上限値を計算し、`math.floor` で下限値を計算します。それぞれの場合の出力は 5、0、2、および -1 です。

Python3




# import math library> import> math> # ceil value for positive> # decimal number> print> (math.ceil(> 4.2> ))> # ceil value for negative> # decimal number> print> (math.ceil(> -> 0.5> ))> # floor value for decimal> # and negative number> print> (math.floor(> 2.2> ))> print> (math.floor(> -> 0.5> ))>

出力:

5 0 2 -1 

Python u の丸め数 math.ceil を歌う

数値を切り上げるには、` を使用して小数点を右にシフトし、切り上げてから、精度を高めるために左にシフトし直す必要があります。 math.ceil() ` と乗算/除算演算。

: この例では、以下のコードは、数値を指定された小数点以下の桁に四捨五入する `math` ライブラリを使用して `round_up` 関数を定義します。精度のために乗算、「math.ceil()」による丸め、および除算を利用します。正と負の値は丸めのためにテストされます。

Python3




# import math library> import> math> # define a function for> # round_up> def> round_up(n, decimals> => 0> ):> > multiplier> => 10> *> *> decimals> > return> math.ceil(n> *> multiplier)> /> multiplier> # passing positive values> print> (round_up(> 2.1> ))> print> (round_up(> 2.23> ,> 1> ))> print> (round_up(> 2.543> ,> 2> ))> # passing negative values> print> (round_up(> 22.45> ,> -> 1> ))> print> (round_up(> 2352> ,> -> 2> ))>

出力:

3.0 2.3 2.55 30.0 2400.0 

切り上げと切り捨てを理解するには、以下の図に従うことができます。右に丸め、左に丸めます。

切り上げと切り捨てについて

切り上げは常に数直線上で数値を右に四捨五入し、切り捨ては常に数直線上で数値を左に四捨五入します。

Python u の丸め数 歌う 数学の床

切り捨てでは、数値が指定された桁数に切り捨てられます。切り捨て関数は次の方法で実装できます。

  • まず、n に 10 ** 小数点以下を乗算して、n の小数点を正しい桁数に右にシフトします。
  • 新しい値は、次を使用して最も近い整数に切り上げられます。 math.floor()
  • 最後に、小数点を 10 ** の小数点で割って左にシフトします。

Python3




import> math> # defining a function for> # round down.> def> round_down(n, decimals> => 0> ):> > multiplier> => 10> *> *> decimals> > return> math.floor(n> *> multiplier)> /> multiplier> # passing different values to function> print> (round_down(> 2.5> ))> print> (round_down(> 2.48> ,> 1> ))> print> (round_down(> -> 0.5> ))>

出力:

2.0 2.4 -1.0 

Python u の丸め数 Numpy モジュールを歌う

Python の NumPy モジュールは、 numpy.round()> 関数 数値を四捨五入します。この関数は、配列の各要素を最も近い整数または指定された小数点以下の桁数に丸めます。

例 : この例では、以下のコードは NumPy モジュールを使用して配列 `arr` を作成し、各要素を最も近い整数 (`rounded_integers`) および小数点以下 2 桁 (`rounded_decmals`) に丸めます。結果は表示用に印刷されます。

Python3




import> numpy as np> # Creating an array> arr> => np.array([> 1.234> ,> 2.567> ,> 3.789> ])> # Rounding each element to the nearest integer> rounded_integers> => np.> round> (arr)> # Rounding each element to two decimal places> rounded_decimals> => np.> round> (arr, decimals> => 2> )> # Displaying the results> print> (> 'Nearest integer:'> , rounded_integers)> print> (> 'Decimal places:'> , rounded_decimals)>

出力:

Nearest integer: [1. 3. 4.] Decimal places: [1.23 2.57 3.79] 

Python u の丸め数 歌う 丸めバイアス コンセプト。

対称性の概念には、丸めバイアスの概念が導入され、丸めがデータセット内の数値データにどのような影響を与えるかを説明します。
切り上げ戦略には、値が常に正の無限大の方向に切り上げられるため、正の無限大に向かうバイアスがかかります。同様に、切り捨て戦略には、負の無限大バイアスに向かう丸めが含まれます。切り捨て戦略には、正の値の場合は負の無限大に向かうバイアスと、負の値の場合は正の無限大に向かうバイアスがあります。この動作を持つ丸め関数は、一般に、バイアスがゼロに向かう丸めを持つと言われます。

a) 半分を切り上げる Pythonのコンセプト

四捨五入のハーフアップでは、すべての数値が指定された精度で最も近い数値に丸められ、切り上げによって同点が解消されます。
四捨五入ハーフアップ戦略は、小数点を希望の桁数だけ右にシフトすることによって実装されます。この場合、シフトされた小数点の後の数字が 5 以下であるか、5 以上であるかを判断する必要があります。
math.floor() 関数を使用して、シフトされた値に 0.5 を加算して切り捨てることができます。

Round_half_up() 関数の実装:

例: この例では、以下のコードは、精度を高めるための `math.floor()` を使用した四捨五入メソッドを使用するカスタム丸め関数である `round_half_up` を定義します。デモには、さまざまな小数点以下の桁を含む正の数値と負の数値が含まれます。

Python3




import> math> # defining round_half_up> def> round_half_up(n, decimals> => 0> ):> > multiplier> => 10> *> *> decimals> > return> math.floor(n> *> multiplier> +> 0.5> )> /> multiplier> # passing different values to the function> print> (round_half_up(> 1.28> ,> 1> ))> print> (round_half_up(> -> 1.5> ))> print> (round_half_up(> -> 1.225> ,> 2> ))>

出力:

1.3 -1.0 -1.23 

b) 半数切り捨て Pythonのコンセプト

これは、四捨五入の半数切り上げ方法と同様に最も近い数値に丸めますが、2 つの数値のうち小さい方に四捨五入することで同点を解消する点が異なります。半分の切り捨て戦略は、round_half_up() 関数の math.floor() を math.ceil() に置き換え、加算する代わりに 0.5 を減算することによって実装されます。

Round_half_down() 関数の実装:

この例では、以下のコードは、「math」ライブラリを使用して「round_half_down」を定義し、四捨五入の動作を実現します。乗算、減算、およびゼロに向かって丸めるために「math.ceil()」を利用します。テスト ケースには正と負の小数が含まれ、小数点第 1 位に四捨五入されます。

Python3




# import math library> import> math> # defining a function> # for round_half_down> def> round_half_down(n, decimals> => 0> ):> > multiplier> => 10> *> *> decimals> > return> math.ceil(n> *> multiplier> -> 0.5> )> /> multiplier> # passing different values to the function> print> (round_half_down(> 2.5> ))> print> (round_half_down(> -> 2.5> ))> print> (round_half_down(> 2.25> ,> 1> ))>

出力:

2.0 -3.0 2.2 

Python でゼロから半分を四捨五入する

「ゼロから半分を四捨五入」では、通常どおり、小数点を指定された桁数だけ右にシフトしてから、新しい数値の小数点のすぐ右にある数字 (d) に注目する必要があります。考慮すべきケースは 4 つあります。

  • n が正で d>= 5 の場合は切り上げます
  • n が正で d = 5 の場合は切り捨てます。
  • n が負で、d>= 5 の場合は切り捨てます。
  • n が負で d <5 の場合は切り上げます

上記のルールに従って四捨五入した後、小数点以下の桁を左にシフトして戻すことができます。

  • 半分を偶数に丸める: データセット内の値を丸めるときに丸めバイアスを軽減する方法があります。必要な精度で単純にタイを最も近い偶数に丸めることができます。半数から偶数への丸め戦略は、Python の組み込みのround()で使用される戦略です。の 10進クラス 高速で正しく丸められた 10 進浮動小数点演算のサポートを提供します。これには、float データ型に比べていくつかの利点があります。 10 進数モジュールのデフォルトの丸め戦略は ROUND_HALF_EVEN です。

例: この例では、以下のコードは `decimal` ライブラリの `Decimal` 関数を使用して、10 進数を正確に表します。これは、文字列から `Decimal` オブジェクトを作成することと、浮動小数点数から直接作成することとは対照的です。次に、「quantize()」関数を使用して、指定された小数点以下の桁数で四捨五入し、10 進算術の精度を示します。

Python3




# import Decimal function from> # decimal library> from> decimal> import> Decimal> print> (Decimal(> '0.1'> ))> print> (Decimal(> 0.1> ))> # Rounding a Decimal number is> # done with the .quantize() function> # '1.0' in .quantize() determines the> # number of decimal places to round the number> print> (Decimal(> '1.65'> ).quantize(Decimal(> '1.0'> )))> print> (Decimal(> '1.675'> ).quantize(Decimal(> '1.00'> )))>

出力:

0.1 0.1000000000000000055511151231257827021181583404541015625 1.6 1.68