簡體   English   中英

IEEE754的C ++靜態斷言

[英]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.

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