首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字小于机器精度的安全算法?

数字小于机器精度的安全算法?
EN

Stack Overflow用户
提问于 2019-09-05 17:01:04
回答 1查看 344关注 0票数 2

这似乎是一个非常基本的问题,但我仍然不确定我是否正确理解。

假设我定义了一些非常小和大的数字

代码语言:javascript
复制
    constexpr double a = 1.53636e-34;
    constexpr double b = 6.12362e-36;
    constexpr double c = 6.92956e+19;

并想用它们来做一些算术。在只有16位数字的情况下,双精度这样做安全吗?

编辑:让我们举一个例子。假设我们想要获得原子单位的光速。它的定义是:

代码语言:javascript
复制
    double c = 2 * epsi * h * col / (e * e);

哪里

代码语言:javascript
复制
    double e = 1.602176634e−19;
    double h = 6.62607015e−34;
    double col = 299792458;
    double epsi = 8.8541878128e−12;

显然,我们并不关心小数点9位左右之后发生的一切。不过,我们关心的是,上述评估结果一致为137.035999.

EDIT2:公式是错的。

EN

回答 1

Stack Overflow用户

发布于 2019-09-05 17:35:13

它的安全性取决于您如何定义“安全”,请记住,在C++中的浮点数学只是一个近似。你提到你想做物理和相关的计算,因为一切都是物理上的近似,我不认为它会出错。实际上,double是处理您的情况的最佳工具。它具有存储效率高、速度快和相当精确的特点。问题是,这个数字有多大有多小,与精度关系不大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57810034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档