我的程式碼
#include <iostream> #include <string> using namespace std; int main () { string s1, s2; long long k; while (getline (cin, s1, '.'), getline (cin, s2)) { s1 += s2; k = atol (s1.c_str()); if (k<=10000) { k *= 0.9; k += 800; } else if (k>=10001 && k<=50000) k *= 0.8; else k *= 0.6; cout << '$' << k/100 << '.' << (k%100<10 ? "0" : "") << k%100 << endl; } }
與正確輸出不相符(line:140) 您的答案為: $650.33 正確答案為: $650.34
與正確輸出不相符(line:142) 您的答案為: $2351.60 正確答案為: $2351.61
與正確輸出不相符(line:162) 您的答案為: $593.45 正確答案為: $593.46
與正確輸出不相符(line:198) 您的答案為: $365.48 正確答案為: $365.49
提示:
要用scanf("%d.%d",&A,&B);
用暴力型運算 double不準確