Python標準庫 fractions 有理數

2021-07-09 11:47:24 字數 2293 閱讀 7954

[python標準庫]fractions——有理數

作用:實現了乙個類來處理有理數。

python 版本:2.6 及以後版本

fraction 類基於 numbers 模組中 rational 定義的 api,實現了有理數的數值運算。

建立 fraction 例項

與 decimal 模組類似,可以採用多種方式建立新值。一種簡便的方式是由單獨的分子和分母值來建立,如下所示。

import fractions

for n, d in [ (1, 2), (2, 4), (3, 6) ]:

f = fractions.fraction(n, d)

print '%s/%s = %s' % (n, d, f)

計算新值時要保持最小公分母。

建立 fraction 的另一種方法是使用 /字串表示:

import fractions

for s in [ '1/2', '2/4', '3/6' ]:

f = fractions.fraction(s)

print '%s = %s' % (s, f)

會解析這個字串,找出分子和分母值。

字串還可以使用更常用的小數或浮點數記法,即用乙個小數點分隔的一系列數字。

import fractions

for s in [ '0.5', '1.5', '2.0' ]:

f = fractions.fraction(s)

print '%s = %s' % (s, f)

浮點數值表示的分子和分母值會自動計算。

還有一些方法可以從有理數值的其他表示(如 float 或 decimal)直接建立 fraction 例項。

import fractions

for v in [ 0.1, 0.5, 1.5, 2.0 ]:

print '%s = %s' % (v, fractions.fraction.from_float(v))

不能精確表示的浮點數值可能會得到出乎意料的結果。

使用值的 decimal 表示則會給出所期望的結果。

import decimal

import fractions

for v in [ decimal.decimal('0.1'),

decimal.decimal('0.5'),

decimal.decimal('1.5'),

decimal.decimal('2.0'),

]:print '%s = %s' % (v, fractions.fraction.from_decimal(v))

decimal 的內部實現不存在標準浮點數表示的精度錯誤。

算術運算

一旦例項化分數,就可以在數學表示式中使用。

import fractions

f1 = fractions.fraction(1, 2)

f2 = fractions.fraction(3, 4)

print '%s + %s = %s' % (f1, f2, f1 + f2)

print '%s - %s = %s' % (f1, f2, f1 - f2)

print '%s * %s = %s' % (f1, f2, f1 * f2)

print '%s / %s = %s' % (f1, f2, f1 / f2)

分數運算支援所有標準操作符。

近似值

fraction 有乙個有用的特性,它能夠將乙個浮點數轉換為乙個近似的有理數值。

import fractions

import math

print 'pi =', math.pi

f_pi = fractions.fraction(str(math.pi))

print 'no limit =', f_pi

for i in [ 1, 6, 11, 60, 70, 90, 100 ]:

limited = f_pi.limit_denominator(i)

print ' = '.format(i, limited)

可以通過限制分母大小來控制這個分數的值。

python標準庫 時間庫

眾所皆知,每乙個程式語言都有自己的時間類庫,python也不例外用法十分簡單 最基本的類,time類 time基本函式介紹 import time print time.asctime 如果未傳入乙個tuple或乙個time struct就是使用當前的時間,返回乙個24字長的時間字串 就這個mon ...

python標準庫 os庫

os模組主要用於跟作業系統打交道 os模組常用的方法 os.getcwd 獲取當前工作目錄,即當前python指令碼工作的目錄路徑 os.chdir dirname 改變當前指令碼工作目錄 相當於shell下cd os.curdir 返回當前目錄 os.pardir 獲取當前目錄的父目錄字串名 os...

不屬於python標準庫 Python標準庫概覽

總結 這個部分講了一些常用的python庫的方法。一下子也記不住,不過基本都自己敲了 試了試。os模組 os模組介紹了一些作業系統級別的方法 os.getcwd 得到當前工作目錄 os.chdir 改變工作目錄 os.system mkdir haha 建立資料夾haha 字串正則匹配 匯入re模組...