簡體   English   中英

在C ++中比較無窮大和無窮大

[英]Compare infinity with infinity in C++

假設我有兩個變量都設置為無窮大

double l = std::numeric_limits<double>::infinity();
double r = std::numeric_limits<double>::infinity();

在代碼的另一點,我對這兩個變量進行了比較

if (l < r) {}

這個比較的結果是在庫中正確定義的嗎? (在我的程序邏輯中,我希望結果是false 。)

(在我的程序邏輯中,我希望結果是false 。)

根據這個

在比較操作中,正無窮大大於除自身和NaN之外的所有值

所以你確實是對的。

請注意,如果編譯器使用的標准與IEEE 754不同,則可能無效,因此請確保std::numeric_limits<double>::is_iec559; 有疑問時返回true

C ++不需要實現來支持其浮點類型的無窮大。 但是,如果實現確實支持無窮大,我們可以預期infinity < infinity是錯誤的。 C ++隱含地假設了正常的數學 - 它沒有定義數學加法,乘法,除法,余弦,對數等等,而只是假設數學是讀者已知的背景信息。

數學家確實區分了不同類型的無窮大,但C ++沒有為此做出規定; 它只提供一個正無窮大和一個負無窮大。 所以很明顯它們是實數的簡單擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM