小编pot*_*ato的帖子

Python:带有浮点数的任意精度

我尝试计算math.exp(9500)但遇到了OverflowError: math range error(大约是 6.3e4125)。从这个问题来看,似乎是由于浮点数太大,接受的答案是“(...) 稍微超出了双精度数的范围,因此会导致溢出”。

我知道Python可以处理任意大的整数(long类型),有没有办法以同样的方式处理任意大的浮点数?

编辑:我最初的问题是关于使用整数来计算 exp(n) 但正如 Eric Duminil 所说,最简单的方法是3**n不提供任何有用的结果。我知道意识到这个问题可能与这个问题类似。

python floating-point bignum exponential

3
推荐指数
1
解决办法
2141
查看次数

C中float/double的按位绝对值(转换期间丢失的小数)

我想要比较不同的方法来获得float/double的绝对值,以找出哪一个是最快的,因为我必须将它应用于大型数组.通过使用强制转换和位掩码,在此过程中会丢失小数.(我必须只使用C)

这是我的代码:

uint64_t mask = 0x7fffffffffffffff;
double d1 = -012301923.15126;
double d2 = (double)(((uint64_t)d1) & mask);
Run Code Online (Sandbox Code Playgroud)

输出是:

d1 = -012301923.15126;
d2 = 012301923.00000;
Run Code Online (Sandbox Code Playgroud)

因此在转换过程中会丢失小数,有没有快速的方法让它们恢复?

提前致谢.

编辑:我知道fabs(),我只是想尝试比较不同的"手工"解决方案.

c bit-manipulation

-2
推荐指数
2
解决办法
906
查看次数