安静的NaN和信号NaN有什么区别?

我已经阅读了关于浮点数的内容,并且我明白NaN可能来自操作。 但我完全不明白这些概念是什么。 有什么区别?

在C ++编程中可以生成哪一个? 作为一名程序员,我可以编写一个程序来创建一个sNaN吗?


当一个操作导致一个安静的NaN时,没有任何迹象表明任何异常,直到程序检查结果并看到一个NaN。 也就是说,如果在软件中实现浮点,计算将继续进行,而无需来自浮点单元(FPU)或库的任何信号。 信号NaN将产生一个信号,通常以FPU的例外形式。 是否抛出异常取决于FPU的状态。

C ++ 11在浮点环境中添加了一些语言控件,并为NaN创建和测试提供了标准化的方法。 但是,控件是否实现并不完善,浮点异常通常不会像标准C ++异常那样捕获。

在POSIX / Unix系统中,通常使用SIGFPE的处理程序来捕获浮点异常。

链接地址: http://www.djcxy.com/p/58495.html

上一篇: What is difference between quiet NaN and signaling NaN?

下一篇: Why does Double.NaN==Double.NaN return false?