Tag: nan

在没有代码更改的情况下生成NaN浮点数时停止调试器

我读了这个和这个 。 如果通过包含fenv.h生成nan并且通过feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);启用所有浮点exceptionfeenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT);则可以抛出SIGFPE feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); 因此,代码改变forms int main () { double dirty = 0.0; double nanvalue = 0.0/dirty; return 0; } 至 #include int main () { feenableexcept(FE_ALL_EXCEPT & ~FE_INEXACT); // Enable all floating point exceptions but FE_INEXACT double dirty = 0.0; double nanvalue = 0.0/dirty; return 0; } 这工作正常,但您必须更改代码。 […]

NaN生成函数的“char-sequence”参数是什么?

除了NAN宏之外,C99还有两种方法可以为浮点数生成NaN值,即nanf(const char *tagp)函数和strtof(“NAN(char-sequence)”) 。 这两种生成NaN的方法都采用可选的字符串参数(在nanf() * tagp,在strtof方法中为char-sequence)。 这个字符串参数到底是做什么的? 我还没有找到你如何使用它的具体例子。 来自cppreference.com我们有: 调用nan(“string”)等同于调用strtod(“NAN(string)”,(char **)NULL); 调用nan(“”)等同于调用strtod(“NAN()”,(char **)NULL); 调用nan(NULL)等效于调用strtod(“NAN”,(char **)NULL); 而nan(3)说: 这些函数返回一个安静的NaN的表示(由tagp确定)。 [snip]参数tagp以未指定的方式使用。 在IEEE 754系统上,有许多NaN表示,tagp选择一个。 这并没有真正告诉我我可以用于tagp字符串或为什么我想要使用它。 此标记字符串的有效选项中是否有列表,以及使用默认nanf(NULL)的原因是什么?

签署NaN值

基于“IEEE”规范:“当输入或结果是NaN时,该标准不解释NaN的符号。” 然而, printf NaN值打印为signed: nan或-nan有人和我打开-nan有人能指出规则集(来自规范吗?)例如,我检查了printf(-1.0f)打印-nan谢谢您

对于未设置的值,使用IEEE754浮点NaN是一个好主意吗?

对于非数学原因未定义的值,使用IEEE754浮点NaN(非数字)是一个好主意吗? 在我们的情况下,它们尚未设置,因为尚未从其他设备接收到值。 上下文是使用IEC1131 REAL32值的嵌入式系统。 编辑:编程语言是C,所以我们很可能使用来自C99的NAN和isnanf(x)。 虽然我们可能需要一些额外的扭曲来将这些扭曲到我们的操作系统兼容性层中。 编程语言中的默认设置似乎是初始化具有正零的浮点变量,其内部表示全为零。 这对我们来说是不可用的,因为0在有效值的范围内。 使用NaN似乎是一个干净的解决方案,但也许它比它的价值更麻烦,我们应该选择其他一些价值?