提问人:whitehat 提问时间:2/5/2023 最后编辑:whitehat 更新时间:2/5/2023 访问量:77
int 到 float 类型转换和 couting 的问题
Problem with int to float typecasting and couting
问:
#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 转换为浮点数并在值满足特定条件后将其除以 100。 此外,该程序不使用点,但当存在逗号时,该程序部分工作。
到目前为止,我已经尝试完全重写代码,在不同的平台上进行测试,但无济于事。我不知道如何让它工作,这就是我在这里的原因。
拜托,不要太苛刻,我是新手。
答:
0赞
john
2/5/2023
#1
改变
float nominal = nominals[i] / 100; // integer division
自
float nominal = nominals[i] / 100.0; // floating point division
将一个整数除以另一个整数总是会产生另一个整数(除法的任何小数部分都会被丢弃)。
评论