首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"NaN“是默认为SNaN还是QNaN

"NaN“是默认为SNaN还是QNaN
EN

Software Engineering用户
提问于 2019-05-21 07:48:25
回答 1查看 1.1K关注 0票数 1

我为开发人员创建了一个函数,用于从字符串读取浮点数(IEEE 754二进制32位)。我已经完成了所有的工作,但我想知道如果用户/或程序员输入了一个没有指定QNaN或SNaN的字符串,比如“QNaN”或SNaN,那么应该考虑什么呢?还是应该将"NaN“视为无效输入,并且只接受"QNaN”或"SNaN"?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2019-05-21 09:21:37

首先,您应该注意到,当禁用浮点异常时,信令NaN (SNAN)的行为与静音NAN (QNAN)相同。通常他们都是残疾人。

如果文件中的"NaN“意为”丢失数据“,则使用QNAN。

如果"NaN“是您的文件被认为意味着”这必须用适当的数据初始化以后“使用SNAN。

在后一种情况下,如果数据被(意外地)读取并输入到计算中,将生成异常(当然,如果启用的话)。但是,在这样做时(启用了异常),您必须确保所有其他FP计算都不会在常规计算期间生成NaN,并且/或需要实现正确的异常处理。当然,你失去了FP数学的优势,即是代数封闭的,也就是能够以一种无异常的方式工作。

FP异常的一个问题是,在大多数编程语言中,异常是不可持续的,而在FP世界中,这是不必要的(在异常之后,代码可以继续)。这有点太严格了。

我个人建议你使用QNAN。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/392179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档