fraction函式的分數處理

2021-10-24 12:58:22 字數 1989 閱讀 2681

python中用於分數計算的模組是fractions,本篇部落格內容來自官網:fractions — 分數

1、float型別引號引起來

2、limit_denominator(max_denominator

1、例項化

2、獲取分子和分母

1、例項化

fraction(numerator=0, denominator=1),其中numerator是分子,denominator是分母。並且能夠單獨接受「有理數」、float、decimal和string型別的數字。

示例如下:

>>> from fractions import fraction  

#第乙個數是分子,第二個數是分母

>>> fraction(2,6)

fraction(1, 3)

#可以直接進行四則運算,如果最後的結果以分數(有理數)顯示,可以直接使用fraction型別計算,不必和float來回轉換

>>> fraction(2,6)*fraction(1,4)

fraction(1, 12)

>>> fraction(2,6)/fraction(1,4)

fraction(4, 3)

# 0的表示

>>> fraction(0)

fraction(0, 1)

如果分數沒有被引號引起來,就會當作float型別處理,就會出現偏差,原因可參考python控制小數字數和四捨五入問題詳解

>>> fraction('2/3')

fraction(2, 3)

>>> fraction(2/3)

fraction(6004799503160661, 9007199254740992)

#直接fraction(1.1)得不到我們想要的11/10結果

>>> fraction(1.1)

fraction(2476979795053773, 2251799813685248)

>>> fraction('1.1')

fraction(11, 10)

2、獲取分子和分母

示例:

>>> from fractions import fraction

>>> fraction(3,6).numerator

1>>> fraction(3,6).denominator

2

1、float型別引號引起來

正如上面的示例,float型別如果引起來,可以有效避免失真。

>>> fraction('1.1')

fraction(11, 10)

>>> fraction(1.1)

fraction(2476979795053773, 2251799813685248)

2、limit_denominator(max_denominator)

max_denominator預設值是1000000,這個函式用於返回乙個分母不大於max_denominator且最接近原值的分數,示例如下:

>>> from math import pi

>>> fraction(pi)

fraction(884279719003555, 281474976710656)

>>> fraction(pi).limit_denominator(1000)

fraction(355, 113)

>>> fraction(pi).limit_denominator()

fraction(3126535, 995207)

#也能用於一些浮點數到有理數的「期望」轉化

>>> fraction(1.1).limit_denominator()

fraction(11, 10)

Python 分數Fraction的轉換和混合型別

float與分數的轉換 1.float object.as integer ratio 作用 產生乙個float物件的分子分母比 返回 包含分子分母的乙個元組 float object method 2.5 as integer ratio 5,22.float與分數轉換 convert float...

mysql的分數排名處理

問題 將資料庫score表排名 返回排名前10的 db有兩種方法 1 效率不高,因為有子查詢。但是簡潔。而且我對socres表做了index。所以效能上也差 不了多少。mysql show create table scores g 1.row table scores create table c...

python筆記 小數和分數的處理

import decimal from decimal import decimal from fractions import fraction 定義這個主要是保留小數的位數 decimal.getcontext prec 5 返回的資料會有很多位數,不夠精確,需要設定一下,保留4位小數就行了。d...