我不明白爲什麼這對90%的輸入有效,但不是其他。它的意思是告訴你多少硬幣你會得到改變。大多數測試金額工作正常,但如果你輸入4.20(或$ 4.20),它返回23個硬幣......它應該是18個硬幣(16個季度和2個鎳幣)。錯誤在哪裏?這是我的代碼:我短C代碼中的小錯誤。爲什麼?
#include <stdio.h>
#include <cs50.h>
int main(void){
float change = 0.00;
printf("How much change is owed? ");
change = GetFloat();
float quarters = change/.25;
change-= (int)quarters*.25;
float dimes = change/.10;
change-= (int)dimes*.10;
float nickels = change/.05;
change-= (int)nickels*.05;
float pennies = (change+.005)/.01;
change-=(int)pennies*.01;
int total = (int)quarters+(int)dimes+(int)nickels+(int)pennies;
printf("%d\n", total);
return 0;
}
你永遠不應該使用浮點數來表示在首位的錢。 – 2012-10-29 19:51:39
由於一切都是1美分的倍數,爲什麼不把所有東西都存儲爲整數美分?您將以這種方式避免所有浮點相關的麻煩。 –
這是一個家庭作業,應該教浮法功能,這是它寫的方式是唯一的原因。大多數輸入工作正常,只有某些數字沒有。我不能用不同的課程或其他課程來重寫它,因爲這是教授想要看到的。 –