gpt4 book ai didi

python - 在Python中从给定的 double 中获取第n个 double

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:18 25 4
gpt4 key购买 nike

这个问题类似于another question但我不知道如何以简单的方式扩展该问题的答案。

在这里,我想根据 Python 中给定的 double 计算第 n 个 double。该函数接受一个整数n、一个 double x,并输出一个double,它是之后的n x(或之前,如果n 为负数)。有什么有效的方法吗?

具体来说,设 nth_fp_after 为函数,则 nth_fp_after(x,n) 应等于对 x 应用 nextafter(C 语言)的 n 倍; nth_fp_after(x,0) 应该是 'x' 等。

最佳答案

answer of the question you pointed to正是你问题的答案。答案解决了 64 位 float 的问题,Python 相当于 C double。

<小时/>

好吧,如果添加以下内容

struct.unpack('!i',struct.pack('!f',x))[0]

n并用它来调用另一个答案的函数,你应该得到它。

<小时/>

修改后的完整解决方案如下所示:

import struct

def nth_fp(n, x=0.0):
if(x>=0):
m = n + struct.unpack('!Q',struct.pack('!d',x))[0]
else:
m = n - struct.unpack('!Q',struct.pack('!d',abs(x) ))[0]
if m < 0:
sign_bit = 0x8000000000000000
m = -m
else:
sign_bit = 0
if m >= 0x7ff0000000000000:
raise ValueError('out of range')
bit_pattern = struct.pack('Q', m | sign_bit)
return struct.unpack('d', bit_pattern)[0]

我为第二个参数添加了默认值,以便您可以在两种情况下使用它,无论有或没有偏移量x

关于python - 在Python中从给定的 double 中获取第n个 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34728595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com