gpt4 book ai didi

c++ - 将 double 转换为整数时的错误

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:39 24 4
gpt4 key购买 nike

<分区>

我正在计算小数点后有效数字的数量。我的程序会丢弃小数点后间隔超过 7 个数量级的所有数字。预计 double 会出现一些错误,我解释了从 double 中减去整数时弹出的非常小的数字,即使它看起来应该等于零(据我所知,这是由于计算机如何存储和计算它们的数字)。我的困惑是为什么我的程序在给定这个随机测试值的情况下不处理这个意外的数字。

放置了很多 cout 语句后,当它尝试转换最后一个 2 时,它似乎搞砸了。每当它转换时,它都会转换为 1。

bool flag = true;
long double test = 2029.00012;
int count = 0;

while(flag)
{

test = test - static_cast<int>(test);

if(test <= 0.00001)
{
flag = false;
}

test *= 10;

count++;

}

我找到的解决方案是在开始时只进行一次转换,因为舍入可能会产生负数并过早终止,然后再进行舍入。有趣的是,trunc 和 floor 也有这个问题,似乎把应该是 2 的东西变成了 1。

我和我的教授都很困惑,因为我完全预料到会出现小数字(大多数在 10^-10 范围内),但没想到类型转换、截断和地板也会失败。

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