c - 如何在GMP发生之前或之后检测尾数精度溢出?

我想问的问题是尾数,而不是exponent,这与我本周早些时候问的关于"missing" digits on the sum of two negative floats.的问题有很大关系
假设尾数的精度是可变的,那么如何判断尾数是否溢出了当前的精度设置?或者,从积极的方面来说,如何判断尾数精度是否可能溢出?
谨致问候,
布鲁斯。

最佳答案

有一些数值方法可以判断你是否会失去精度,但底线是你需要更好地理解精度的定义。
-4939600281397002.2812

-4939600281397002.2812000000000000
不是同一个号码。
当你添加
-2234.6016114467412141号

-4939600281397002.2812
加在一起,正确的输出将只有20位精度,因为小数字中额外的12位数字是没有意义的,因为大数字中的12位同样大小的数字是未知的。你可以暗示它们是零,但如果是这样,那么你必须明确声明它们是零,并使用一个可以处理它的编号系统-计算机不善于理解隐含的意图。
只要检测出什么时候会出现这个问题,你所需要做的就是找出它们是否具有相同的指数(假设标准尾数为+/-1或类似的二进制等价值)。如果它们没有被规范化,那么需要对它们进行规范化以进行比较,或者使用稍微复杂一点的指数比较。
精确和精确不是一回事。。。
-亚当

本文翻译自 https://stackoverflow.com/questions/472652/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c overflow detection gmp mantissa


相关文章:

c - 标准(或免费)POSIX路径操作C库

c - 我可以在init和ctor中看到函数吗

c - rand()函数每次C都会产生相同的输出[重复]

css - CSS在pre标签上显示垂直滚动条

javascript - 使用JavaScript进行URL检测

c - 警告:函数“ fsync”的隐式声明在C99中无效

css - CSS元素最大大小

c - 两个数字的LCM

python - 使用YOLO实时检测,无法使用OpenCV进行编译

javascript - 使用JavaScript检测水平div溢出?