C std isnan等函式的使用

2021-09-28 17:20:50 字數 1414 閱讀 6519

c和c++11標準提供了類似於isnan、isfinite、isinf、isnormal、fpclassify分別用於判斷是非數(nan)值、有限制、無窮值、正常數值等。

今天在使用modbus讀取裝置對應暫存器的float狀態值時,出現一些問題,導致資料不能正常獲取,最後發現原來裝置對應的暫存器裡面會出現一些無效的值,導致讀取顯示出錯,沒做容錯判斷處理。後面加上條件判斷就可以了。

bool d02011c01::

getstate()

;for

(int i =

0; i <

12; i++)}

}return rc;

}

注意

對於float型別的值,c和c++11中都做了相應的處理,用於判斷乙個float值是否為無窮大、非數( nan )值;

有多個擁有不同符號位和載荷的不同 nan 值,參閱 std::nan 及 std::numeric_limits::quiet_nan 。

nan 值決不與自身或其他 nan 值比較相等。 ieee-754 不要求複製 nan 保留其位表示(符號與載荷),儘管大多數實現保留。

另一種測試浮點值是否 nan 的方式是與自身比較: bool is_nan(double x)

示例如下:

#include

#include

#include

intmain()

輸出:

isnan(nan)

=true

isnan(inf)

=false

isnan(0.0)

=false

isnan(dbl_min/2.0)

=false

isnan(0.0 / 0.0)

=true

isnan(inf - inf)

=true

有時候發現不少函式以前沒怎麼用過,遇到問題才發現又學到了一些知識。

c和c++11標準提供了類似於isnan、isfinite、isinf、isnormal、fpclassify分別用於判斷是非數(nan)值、有限制、無窮值、正常數值等。

isnan

nannot-a-number (constant )

isfinite

is finite value (macro )

isinf

is infinity (macro/function )

isnormal

is normal (macro/function )

fpclassify

classify floating-point value (macro/function )

參考資料:

1、2、

3、

MPI Extent等函式的使用

mpi type extent returns the extent of a datatype 返回對應資料型別的長度 以下次序輸出型別長度為4,8單位是位元組 include include mpi.h int main int argc char argv mpi finalize inclu...

fprintf fscanf等函式的用法

對檔案的讀和寫是最常用的檔案操作。在 語言中提供了多種檔案讀寫的函式 字元讀寫函式 fgetc和fputc 字串讀寫函式 fgets和fputs 資料塊讀寫函式 fread和fwrite 格式化讀寫函式 fscanf和fprinf 隨著每次資料的讀取,檔案流指標fp都作相應的移動 使用以上函式都要求...

MYSQL 常用函式 條件判斷 正則等的使用案例

巧用函式 實現對資料進行匹配 加密 擷取 格式化處理 替換文字 replace obj,from,to 擷取字串 substr obj,from,to 正則判斷 obj regexp 1 3456789 條件判斷 支援兩個以上 case when 條件1 then 結果1 when 條件2 then...