[英]C++ static assert of IEEE754
)
如何制作IEEE754規范的靜態斷言(浮點表示)?
我的想法是這樣的:
static unsigned char c[8] = { 0, 0, 0, 0, 0, 0xd0, 0x84, 0x40 };
static double d= *reinterpret_cast<double *>(c);
BOOST_STATIC_ASSERT(d==666.);
但它不起作用:(我應該指出我的編譯器不是C ++ 11(我使用visual studio 2008)而且我沒有常規的靜態斷言。
首先,請注意,由於編譯器特性,您無法可靠地斷言浮點運算符合IEEE 754,例如,Visual C ++和g ++都有標志,這些標志會以NaN值無法正確比較wrt為代價,產生略微更快的運算。 IEEE 754。
但我有理由相信,如果std::numeric_limits:: is_iec559
為真,那么普通值的位級表示符合IEEE 754。
即
static_assert( std::numeric_limits<double>::is_iec559, "IEEE 754 floating point" );
“IEC 559”實際上只是“IEEE 754”的另一個名稱; 它是相同的標准。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.