我是一个编程新手。我需要一个简单的函数来将任何带小数点 X.YZ 的数字转换为 XYZ。我通过将它乘以 10 次并使用double到int转换来做到这一点。
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 更多的内存)。
所以我的问题是:为什么对于 long int 的内存范围内的数字不能 100% 工作?为什么是 132.54 和类似的数字?
我正在使用代码块和 GNU GCC 编译器。