gpt4 book ai didi

c++ - 简单循环不适用于随机数

转载 作者:太空狗 更新时间:2023-10-29 19:59:33 24 4
gpt4 key购买 nike

我是一个编程新手。我需要一个简单的函数来将任何带有小数点 X.YZ 的数字转换为 XYZ。我通过将它乘以足够多的 10 次并使用 doubleint 转换来做到这一点。


  int main()
{
std::cout << "Number: " << std::endl;
double a;
// the uninitialized b was pointed out, its not the issue
long b = 0;

std::cin >> a;

while(b!=a)
{
a*=10;
b=a;
}

std::cout << a << std::endl;
return 0;
}

这在 90% 的时间里都有效。对于像 132.54 这样的数字,程序会运行无限长。它按照应有的方式处理 132.547(应该使用比 132.54 更多的内存)。

所以我的问题是:为什么它不能 100% 地处理 long int 内存范围内的数字?为什么是 132.54 和类似的数字?

我正在使用 Codeblocks 和 GNU GCC 编译器。

最佳答案

许多十进制 float 不能用二进制精确表示。您只能得到一个近似值。

如果 132.54 表示为 132.539999999999999,您将永远无法匹配。

打印循环中的值,您将看到发生了什么。

关于c++ - 简单循环不适用于随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582085/

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