【问题标题】:Python create custom NaNPython 创建自定义 NaN
【发布时间】:2012-07-03 06:54:59
【问题描述】:

是否可以在 Python 中创建自定义 NaN 值?

我对浮点表示有点了解,NaN 是一个带有一些特殊指数的 FP 值。因此,具有该特殊指数的每个 FP 值都是 NaN。

确切地说,我想做的是:

x = make_my_special_NaN(int_seed)
assert math.isnan(x)
assert test_my_special_NaN(x, int_seed)
assert not test_my_special_NaN(float("nan"), int_seed)

我称为make_my_special_NaN 的函数应该采用一个整数种子,它可以 用于识别我拥有的特殊 NaN 值(如果可能的话)。

有了这个,应该可以测试给定的 NaN 值是否是给定整数种子的特殊 NaN。

提前致谢

【问题讨论】:

  • 需要确切地知道你需要它来做什么。麻木??数学(由你的帖子暗示)如果你需要 math.isnan 看起来需要猴子补丁,test_my_specail_NaN 会相当容易。

标签: python nan


【解决方案1】:

struct 中的fd 格式说明符将允许您使用任何您喜欢的位模式。

【讨论】:

  • 更具体地说,struct.unpack('!f', '\x7F\x80\x00\x01') 将解压缩为有效位数为 1 的 float NaN。将尾随 23 位替换为除零以外的任何值,您将得到一个 NaN。 double 相同,除了前导部分是 `'\x7F\xF' 并且有效数字是 52 位。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多