我是一個初學者,這是(的簡化版本)的代碼,我寫這封信的部分:C,而環棘手異常
1.prompt用戶輸入一個數字(浮動金額),讓用戶說將只有數量是0.05的倍數;
2.計算該美元數量的鎳(int)數量。
int main(void)
{
float amount = 0;
printf("$ ");
amount = get_float();
int n = 0;
while ((amount - 0.05) >= 0)
{
amount -= 0.05;
n ++;
}
printf("%i nickels\n", n);
}
它適用於任何量< = 0.3或> = 1.2(因此$ 2具有40個鎳和$ 0.30有6個鎳);
但一個鎳少之間/包括0.35和1.15的任何量(因此$ 0.35有6個鎳和$ 1具有19個鎳)
我步步打印,事實證明,對之間的任何量0.35和1.15,程序停止在最後的0.050000,而不是返回到循環並且最後一次循環。
出了什麼問題?請幫助...非常感謝您的時間!
相關:是浮點數學破? –
切勿使用浮點進行貨幣計算。浮點不適用於貨幣,會導致結果錯誤,不準確,有時甚至是非法的。使用整數來計算分數並檢查你的法則對四捨五入的說法。即使只是學習或編寫示例代碼,也會養成正確的做法。試着讓數字正確合計,而憤怒的會計師在每個月的午夜前45分鐘就會對你大喊大叫,這並不好玩(特別是當它是某人時elses代碼)。 – Art