gpt4 book ai didi

c++ - 为什么我的 double 可以包含低于机器 epsilon 的值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:58 25 4
gpt4 key购买 nike

我正在使用 double 求解一个方程,我得到的是 -7.07649e-17 而不是 0

我同意它非常接近,我可以说它是相等的,但是 I've read that the machine epsilon for the C++ double type is 2^-52这比我得到的值大。

那么为什么我的值比机器 epsilon 低?为什么该值不四舍五入为零?

这没什么大不了的,但是当我进行逻辑测试时,我的值似乎不为零...

最佳答案

这个故事中有两个不同的常量。一个是 epsilon,它是一个最小值,当添加到 1.0 时会产生不同于 1.0 的值。如果将较小的值添加到 1.0,您将再次得到 1.0,因为计算机中数字的表示存在物理限制。但是有些值小于 epsilon 且大于零。 double 的最小此类数字你得到 std::numeric_limits<double>::min .

作为引用,您可以通过 std::numeric_limits<double>::epsilon 获得 epsilon .

关于c++ - 为什么我的 double 可以包含低于机器 epsilon 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43678480/

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