[問題] 檢查出 -1.#INF -1.#IND

看板C_and_CPP (C/C++)作者 (迪歐麥斯威爾)時間16年前 (2009/05/27 22:28), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/2 (看更多)
請問一下,有沒有辦法可以檢查出 double 的值是不是無效的 例如:-1.#INF、-1.#IND 希望不要是編譯器才有的特殊函數,例如 VC 的 isinf() 我用的是 Dev C++ 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.14.105

05/27 23:19, , 1F
查IEEE 754 spec, 用bit mask去分析exponent/mentisa部
05/27 23:19, 1F

05/27 23:20, , 2F
份, 就可以找出非regular的floating point值:)
05/27 23:20, 2F

05/27 23:21, , 3F
double是不是用754我忘了, 反正規則應該都差不多....
05/27 23:21, 3F

05/27 23:21, , 4F
不過為了方便, 最終你應該也是會寫成define / function
05/27 23:21, 4F

05/27 23:56, , 5F
isinf 和 isnan 是 C99 標準,並非編譯器特別提供的
05/27 23:56, 5F

05/28 00:56, , 6F
.......誰跟你說 isinf() 是 VC 特有的。
05/28 00:56, 6F

05/28 01:21, , 7F
我猜..原po用dev-c++ compile的時候沒加-lm
05/28 01:21, 7F
文章代碼(AID): #1A7Ktxp5 (C_and_CPP)
文章代碼(AID): #1A7Ktxp5 (C_and_CPP)