gpt4 book ai didi

c++ - 大于 -DBL_MAX 的最小负数

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

我代表一个“物理上不可能”的值,在计算机上可能代表的最负值。

#include <float.h>
double physically_impossible = -DBL_MAX;

这个测试效果很好

if( physically_impossible == -DBL_MAX )
cout << " OK, detected impossible value";
else
cout << " failed to detect impossible value";
cout << endl;

给予

 OK, detected impossible value

但是当我尝试测试一个非常小但“物理上可能”的数字时,出现了可怕的错误。

double physically_impossible_plus_one = 1 - DBL_MAX;
cout << "physically_impossible " << physically_impossible << " physically_impossible_plus_one " << physically_impossible_plus_one;
if( physically_impossible < physically_impossible_plus_one )
cout << " OK, detected impossible value plus one";
else
cout << " failed to detect impossible value plus one";
cout << endl;

给予

physically_impossible -1.79769e+308 physically_impossible_plus_one -1.79769e+308 failed to detect impossible value plus one

正如 Karoly Horvath 指出的那样,由于精度有限,此方法失败了。我需要的是大于 -DBL_MAX 的最小负数

(动机:我想将数字(不是引发异常和触发断言的 NAN)划分为物理上可能的和物理上不可能的,同时尽量减少物理上可能数字的可用范围。)

最佳答案

浮点表示的精度有限。在 -1.79769e+308 上加一显然不会改变它。

这不是问题,不用担心。如果该值表示任何物理属性,那么,接近 DBL_MAX 意味着您正在做一些非常错误的事情。

关于c++ - 大于 -DBL_MAX 的最小负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138743/

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