我正在写一个程序,它从输入中获取一美元的金额,并以单词形式显示金额。此时无法使用字符串,数组或函数,所以我使用开关结构解决了这个问题,尽管它效率不高。整数模数
但是,我的问题来了,当我已经将输入从一个浮点数转换为整数,并尝试使用模数单数出小数点后的数字;由于某种原因,它不会返回正确的数字。
所以说为321.78 提取第一个小数(或8)它返回7.我不太确定为什么发生这种情况,以及如何解决它。
这里是我的第一部分
float number;
int digit1, digit2, digit3, decimals, decimal1, decimal2, int_number;
cout << "Enter a dollar amount from 0-1000: ";
cin >> number;
int_number = number * 100;
digit1 = (int_number % 1000)/100; //ones
digit2 = (int_number % 10000)/1000; //tens
digit3 = (int_number % 100000)/10000; // hundreds
decimal1 = int_number % 10;
decimal2 = (int_number % 100)/10;
代码decimal1应返回8,如果输入为321.78。我错过了什么吗? 任何帮助,将不胜感激。
尝试打印'int_number'。 –
我也怀疑这是一个精确问题。更好地利用'double'比'float' – syam
如果你希望用户输入'321.78'但它作为'int'值'32178',我建议不要经历一个'float'到那里。真的,你想以字符串的形式读取它,解析它以除去'.'并检查格式错误,然后将字符串'32178'转换为'int'。以'float'作为输入基本上告诉用户他们必须输入一个可表示的浮点值。 –