Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの有理数(分数)


p / qの形式で商または分数として表現できる任意の数は、有理数と呼ばれます。 Pythonライブラリの分数モジュールは、有理数演算の機能を提供します。

このモジュールは、Fractionクラスを定義します。そのオブジェクトは、以下のようにさまざまな方法で構成できます-

Fraction(num, denom)

分数コンストラクターの最初のバージョンは、分子と分母の2つのパラメーターを受け取ります。デフォルトの分子は0で、デフォルトの分母は1です。分母の値=0はZeroDivisionErrorをスローします。

>>> from fractions import Fraction
>>> n1 = Fraction(2,5)
>>> n1
Fraction(2, 5)
>>> n2 = Fraction(6,15)
>>> n2
Fraction(2, 5)
>>> n3 = Fraction(10,1)
>>> n3
Fraction(10, 1)
>>> n3 = Fraction(10)
>>> n3
Fraction(10, 1)

分子と分母のパラメーターは、共通の係数で割った後、最小値に減少することに注意してください。

分数コンストラクターは、有効な数値表現が含まれている場合、文字列パラメーターを受け取ることもできます。

>>> n1 = Fraction('5')
>>> n1
Fraction(5, 1)
>>> n2 = Fraction('4/7')
>>> n2
Fraction(4, 7)
>>> n3 = Fraction('0.25')
>>> n3
Fraction(1, 4)
>>> n4 = Fraction('1.23E4')
>>> n4
Fraction(12300, 1)

浮動小数点数は、コンストラクターのパラメーターにすることもできます。ただし、floatは純粋なバイナリ形式で表現されるため、結果のFractionオブジェクトの分子と分母の商は正確でない場合があります。一方、パラメータとしてのDecimalクラスのオブジェクトは、Fractionオブジェクトも生成します。

>>> from fractions import Fraction
>>> from decimal import Decimal
>>> n1 = Fraction(2.1)
>>> n1
Fraction(4728779608739021, 2251799813685248)
>>> n2 = Fraction(Decimal('2.1'))
>>> n2
Fraction(21, 10)

Fractionオブジェクトでは、すべての算術演算が許可されます。

>>> n1 = Fraction(2,3)
>>> n2 = Fraction(1,2)
>>> n1+n2
Fraction(7, 6)
>>> n1-n2
Fraction(1, 6)
>>> n1*n2
Fraction(1, 3)
>>> n1/n2
Fraction(4, 3)

乱数演算が商形式でどのように実行されるかを思い出してください-

Pythonの有理数(分数)

分数オブジェクトには、分子と分母の2つの属性があり、これらは個別にアクセスできます。

>>> n1 = Fraction(2,3)
>>> n1.numerator
2
>>> n1.denominator
3

Fractionクラスには、商(床値)よりも小さい最大の整数と商(天井値)よりも大きい最小の整数を見つけるための次の便利なメソッドがあります

>>> n1 = Fraction(355,113)
>>> n1.__floor__()
3
>>> n1.__ceil__()
4

別のクラスメソッドlimit_denominator()は、指定された値に最大で等しい分母を持つ最も近い分数を返します。

>>> Fraction('2.71828').limit_denominator(400)
Fraction(1071, 394)

この記事では、Python標準ライブラリの分数モジュールの特徴と機能について説明しました。


  1. reduce関数を使用して有理数の積を見つけるPythonプログラム

    有理数のリストがあるとします。削減機能を使用して製品を見つける必要があります。 reduce()関数は、左から右へのオブジェクトのリストに累積的に2つの引数を持つ関数を適用します。 したがって、入力が分数=[(5,3)、(2,8)、(6,9)、(5,12)、(7,2)]のような場合、出力は(175、432)になります。 )5/3 * 2/8 * 6/9 * 5/12 * 7/2 =(5 * 2 * 6 * 5 * 7)/(3 * 8 * 9 * 12 * 2)=2100/5184 =175/432。 これを解決するには、次の手順に従います- fracs:=新しいリスト fracの各f

  2. Excelで分数として数値を表示する方法

    Excelシートに分数を入力しようとしましたが、Enterキーを押すと、シリアル、整数、または10進数に変わり、何をすべきかわかりませんか? Microsoft Excelでは、分数形式を使用して数値を分数に変換できます。 Excelの分数形式とは何ですか? 数学では、分数の定義は整数ではない数値ですが、Excelでは、分数は数値を数値ではなく分数として表示するために使用される数値形式です。 Excel関数の書式設定には、最大1桁、2桁、3桁、半分、4分の1、8分の1、16分の1などのいくつかのオプションがあります。 Excelで数値を分数として表示する方法 以下の手順に従って、Micr