python里面的nan的几种情况_如何在Python中区分不同类型的NaN float

这篇博客探讨了Python中NaN的不同类型,特别是通过结构模块和Kevin's Summary Charts来理解IEEE 754浮点数的位模式。文章提到了float('nan')和scipy.nan的区别,并尝试创建信号NaN和安静NaN,发现信号NaN会被转化为安静NaN。
摘要由CSDN通过智能技术生成

我为你挖了一点,我想你可以使用结构模块与

Kevin’s Summary Charts上的信息相结合.它们解释了用于各种IEEE 754浮点数的确切位模式.

唯一可能必须小心的是,如果我阅读关于这个IND终止值的主题,那么该值在C代码直接分配时会倾向于触发某种浮点中断,从而使其变为一个纯NaN.这反过来意味着这些人被建议在ASM而不是C中做这样的事情,因为C抽象了那些东西.由于不是我的领域,我不知道这种价值会在多大程度上混乱Python,我想我会提到它,所以你可以至少关注任何这样奇怪的行为. (见this question公认的答案).

>>> import struct

>>> struct.pack(">d", float('nan')).encode("hex_codec")

'fff8000000000000'

>>> import scipy

>>> struct.pack(">d", scipy.nan).encode("hex_codec")

'7ff8000000000000'

参考Kevin’s Summary Charts,这表明float(‘nan’)实际上在技术上是不确定的值,而scipy.nan是一个安静的NaN.

让我们尝试做一个信号NaN,然后​​验证它.

>>> try_signaling_nan = struct.unpack(">d", "\x7f\xf0\x00\x00\x00\x00\x00\x01")[0]

>>> struct.pack(">d", try_signaling_nan).encode("hex_codec")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值