国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

利用標準庫fractions模塊讓Python支持分數類型的方法詳解

2020-02-16 02:03:28
字體:
來源:轉載
供稿:網友

前言

你可能不需要經常處理分數,但當你需要時,Python的Fraction類會給你很大的幫助。本文將給大家詳細介紹關于利用標準庫fractions模塊讓Python支持分數類型的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

fractions模塊

fractions模塊提供了分數類型的支持。

Fraction類

該類是fractions模塊的核心,它繼承了numbers.Rational類并且實現了該類所有的方法。

構造函數并不復雜:

class fractions.Fraction(numerator=0, denominator=1) class fractions.Fraction(int|float|str|Decimal|Fraction)

可以同時提供分子(numerator)和分母(denominator)給構造函數用于實例化Fraction類,但兩者必須同時是int類型或者numbers.Rational類型,否則會拋出類型錯誤。當分母為0,初始化的時候會導致拋出異常ZeroDivisionError。

而如果只提供一個參數,則可以用上述五種類型進行初始化。當使用字符串進行初始化時,fractions模塊使用內置的正則表達式進行匹配。而使用浮點數或者Decimal進行初始化時,fractions模塊會在內部調用as_integer_ratio()

下面的代碼示例來自官方文檔,展示了各種實例化Fraction的方式:

>>> from fractions import Fraction>>> Fraction(16, -10)Fraction(-8, 5)>>> Fraction(123)Fraction(123, 1)>>> Fraction()Fraction(0, 1)>>> Fraction('3/7')Fraction(3, 7)>>> Fraction(' -3/7 ')Fraction(-3, 7)>>> Fraction('1.414213 /t/n')Fraction(1414213, 1000000)>>> Fraction('-.125')Fraction(-1, 8)>>> Fraction('7e-6')Fraction(7, 1000000)>>> Fraction(2.25)Fraction(9, 4)>>> Fraction(1.1)Fraction(2476979795053773, 2251799813685248)>>> from decimal import Decimal>>> Fraction(Decimal('1.1'))Fraction(11, 10)

限制分母

fractions.Fraction.limit_denominator(max_denominator=1000000)

有時候將浮點數或者Decimal作為Fraction實例的初始化數據可能會遇到舍入誤差的問題,如上面調用Fraction(1.1)時不返回Fraction(11, 10)的例子。這時Fraction類提供了一個實例方法limit_denominator()用于減小這種誤差。這個方法本來是為了通過限制分母來得到一個近似值,但是在出現舍入誤差的時候反倒使得結果更加精確了,如下面的例子:

>>> from fractions import Fraction>>> Fraction(1.1)Fraction(2476979795053773, 2251799813685248)>>> Fraction(1.1).limit_denominator()Fraction(11, 10)

將Fraction用于算術運算、關系運算和其他多種操作

上面提到,Fraction類繼承了numbers.Rational類并且實現了該類所有的方法。所以Fraction類事實上通過重載很多特殊函數,使得其實例可以直接用于多種算術運算。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东兰县| 安仁县| 建始县| 广宁县| 宜兰县| 太湖县| 鄢陵县| 临西县| 巴彦淖尔市| 乌兰县| 临邑县| 清流县| 连州市| 高安市| 莱西市| 北安市| 拜城县| 佛教| 芦溪县| 沧源| 齐河县| 蒙山县| 瓦房店市| 天台县| 富裕县| 阳谷县| 九台市| 东乡族自治县| 蒙城县| SHOW| 贡觉县| 广昌县| 宣化县| 拉萨市| 楚雄市| 郎溪县| 白沙| 嘉善县| 辽源市| 阜阳市| 兴隆县|