python無窮大 Python 表示無窮大的數

2021-10-11 21:55:06 字數 1703 閱讀 3549

我之前只知道設定初始值0.今天偶然在python演算法書上看到這個片段,從100個隨機數裡面找2個最靠近的自然數(不相等):

from random importrandrange

seq= [randrange(10**10) for i in range(100)]

dd= float("inf")for x inseq:for y inseq:if x == y: continued= abs(x-y)if d

xx, yy, dd=x, y, d

print (xx,yy)

我猜測dd表示正無窮.查閱文件,果然如此:

float also accepts the strings 「nan」 and 「inf」 with an optional prefix 「+」 or 「-」 for not a number (nan) and positive or negative infinity.

負無窮有兩種表達方式:

>>> float('-inf')==-float('inf')

true

順便還收穫了nan的概念,暫時不知道有什麼用.

infinite(無窮大)數

顯然,這是與finite數相對的。在無窮大數里值是固定的,分為+∞(正無窮大)和∞(負無窮大)。exponent和significand的值如下所示。

型別exponent

significand

值單精度

ff雙精度

7ff擴充套件雙精度

7fff

0x80000000_00000000

對於擴充套件雙精度來說,由於它的j位是顯式的,必須為1值(否則是unsupported型別),因此significand的值為0x80000000_00000000。

nan(not a number)數

如果乙個數超出infinite,那就是乙個nan(not a number)數。在nan數中,它的exponent部分為可表達的最大值,即ff(單精度)、7ff(雙精度)和7fff(擴充套件雙精度)。

nan數與infinite數的區別是:infinite數的significand部分為0值(擴充套件雙精度的bit63位為1)。而nan數的significand部分不為0值。

nan數包括下列兩類。

① snan(signaling nan)數:snan數表示是一種比較嚴重的錯誤值。

② qnan(quiet nan)數:在一般情況下,qnan數是可接受的。

snan和qnan數的編碼區別在於significand部分的不同,如下所示。

nan型別

significand

備註snan

1.0***…***

***不為0

qnan

1.1…

1.1 後面任意值

snan數的significand以1.0開頭(並且1.0後面的位不為0值),而qnan數的significand是1.1開頭。

x87 fpu或sse指令遇到snan數時會產生#ia異常,而遇到qnan時不產生#ia異常(部分指令除外)。

那麼既然nan不是乙個真實的數值,在程式如何判斷變數是否變成了nan呢?大部分語言中針對nan值都有一系列的函式定義,c語言中最常見的函式如下:

_isnan(double x);                  //判斷是否為nan

_finite(double x);                  //判讀是否為無窮大

Python 表示無窮大的數

偶然間在刷題瀏覽大佬的解題思路時看到了個 float inf 這麼個表示 很low的我當時查詢了下 可表示無窮大 float inf 也可表示無窮小 float inf 任何數字都大不過 float info 小不過 float inf 如隨便給個int變數 x float inf x float ...

無窮大無窮小

如果問題中各資料的範圍明確,那麼無窮大的設定不是問題,在不明確的情況下,很多程式 員都取0x7fffffff作為無窮大,因為這是32 bit int的最大值。如果這個無窮大只用於一般的比較 比如求最小值時min變數的初值 那麼0x7fffffff確實是乙個完美的選擇,但是在更多的情況下,0x7fff...

程式設計中的無窮大

在網上看別人 的時候,經常會看到他們把inf設為0x7fffffff,因為這是32 bit int的最大值。如果這個無窮大只用於一般的比較 比如求最小值時min變數的初值 那麼0x7fffffff確實是乙個完美的選擇。if d u w u v 如果u,v之間沒有邊,那麼w u v inf,如果我們的...