【发布时间】:2023-02-05 18:34:33
【问题描述】:
#include <iostream>
using namespace std;
int main()
{
int nominals[15] = {50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1};
float numer;
cin>>numer;
numer = numer * 100;
int numer2 = (int)numer;
while(numer2 != 0)
{
for(int i = 0; i<15; i++)
{
if(numer2 >= nominals[i])
{
numer2 = numer2 - nominals[i];
if(nominals[i] >= 100)
{
cout<<nominals[i] / 100<<" ";
}
else
{
float nominal = nominals[i] / 100;
cout<<nominal<<" ";
}
i--;
}
}
}
}
基本上,我在这里尝试的是将给定数字与标称表中存在的值分开。值 >= 100 它可以正常工作。但是,如果值 < 100,它根本不起作用,至少它不会计算出来。但是我无法调试它,因为 gdb 根本无法使用它。 请注意,转换发生在 main() 函数的第一部分,将 int 转换为 float 并在值满足特定条件后将其除以 100。 此外,该程序不适用于点,但在出现逗号时部分起作用。
到目前为止,我已经尝试完全重写代码,在不同平台上进行测试,但无济于事。我不知道如何让它工作,这就是我来这里的原因。
请不要太苛刻,我是新手。
【问题讨论】:
-
“因为 gdb 根本无法使用它”这是什么意思?这是您需要解决的主要问题
-
@463035818_is_not_a_number 调试功能不会加载
-
@whitehat 你真的需要找出 gdb 不工作的原因,但这是一个完全不同的问题。
标签: c++ casting floating-point integer