- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我代表一个“物理上不可能”的值,在计算机上可能代表的最负值。
#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/
我正在尝试为所有可表示的有限值生成具有大致相等概率的随机 double 。我相信这类似于随机签名的 exponential_distribution,uniform_distribution 将不起作
在 Visual C++ 2010 中,我试过这个 double d= DBL_MAX; double dblmaxintpart; modf(DBL_MAX, &dblmaxintpart); 在我
如果之前有人问过这个问题,我深表歉意,但我通读了许多 DBL_MAX 线程,但没有看到这个确切的问题。 在我的 float.h header 中,变量定义为 #define DBL_MAX
我刚刚读到有关 IEEE 754 的信息标准以了解如何single-precision和 double-precision实现了 float 。 所以我写了这个来检查我的理解: #include #
代码 #include #include #include int f( double x, double y, double z){ return (x+y)+z == x+(y+z); }
我在某处看到这段代码 printf("DBL_MAX : %g\n", (double) DBL_MAX); Actor 是必要的吗?我在标准中找不到任何指定 DBL_MAX 必须实际具有
这一行: NSLog(@"DBL_MAX: %f", DBL_MAX); 打印这个非常大的值:17976931348623157081452742373170435679807056752584499
我代表一个“物理上不可能”的值,在计算机上可能代表的最负值。 #include double physically_impossible = -DBL_MAX; 这个测试效果很好 if( physi
我在我的 iPhone 上运行这段代码: double d = DBL_MAX; NSString *s = [NSString stringWithFormat:@"%.0f", d]; doubl
我想要极端的值(value)。 #include using namespace std; #include #include #include #define THRESHOLD 2*DBL
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我正在编写一个 ptree,在某些时候我需要将 DBL_MAX 放入(作为默认值)。打开生成的 xml 文件时,我看到了正确的数字。 但是当我使用 ptree.get 获取数字时抛出异常:conver
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我使用的是 Embarcadero RAD Studio 的评估版。我为静态库中的代码和主应用程序中的代码获得了不同的 DBL_MAX 值。 代码是 双 x = DBL_MAX; 在静态库的代码中,x
我的一个函数返回一个 double,我想用一个无效值来指示错误条件,例如 DBL_MIN、DBL_MAX 或 -DBL_MAX。 #include #include #include doubl
我正在登录(写入文件)backgroundTimeRemaining每次我的应用程序从挂起模式唤醒时的值,就在我使用过期处理程序开始 UIApplication 的后台任务之前,就像这样(在我发出网络
我正在查看由以下代码片段生成的日志消息。 Flog 是用于调用内部日志记录类的#define。 代码来 self 项目中包含的 Pod 中的源文件。我不知道这是否重要。 我对这条消息感到困惑,因为在执
源代码(我不确定这是哪个版本,它只是网站的摘录)。在 for 循环的最开始,注释说“我们已经获得了足够的数字,我们将忽略其余的”。 为什么这是真的?为什么这“并不一定意味着结果会溢出。”? /* Co
在我的代码中,我使用了在 math.h 中定义的 DBL_MAX。在 VS2010 中它工作正常,但在 VS2008 中出现错误: error: C2065: 'DBL_MAX' : undeclar
在进行转换测试时,我在 C++ 中遇到了一些奇怪的行为。 上下文 网上的C++引用表明std::numeric_limits::max()的返回值(在 limit.h 中定义)应该是 DBL_MAX
我是一名优秀的程序员,十分优秀!