#20514: WA(line:79)


t855000@gmail.com (RosaPigg)


#include <iostream>
#include <iomanip>
#include<math.h>

using namespace std;

int main()
{
    double money = 0;

    while(cin>>money)
    {
        cout << fixed << setprecision(3);
        money = money*100;
        if(money<=10000)
        {
            money = money*9/10+800;
            cout << '$' << floor (money)/100 << endl;
        }
        elseif(money<=50000)
        {
            money = money*8/10;
            cout << '$' << floor (money)/100 << endl;
        }
        else
        {
            money = money*6/10;
            cout << '$' << floor (money)/100 << endl;
        }
    }
    return0;
}
 
用了floor函數還是錯誤==
#20531: Re:WA(line:79)


tommy123234345456567@gmail.com (星雨)


#include
#include
#include

using namespace std;

int main()
{
    double money = 0;

    while(cin>>money)
    {
        cout << fixed << setprecision(3);
        money = money*100;
        if(money<=10000)
        {
            money = money*9/10+800;
            cout << '$' << floor (money)/100 << endl;
        }
        elseif(money<=50000)
        {
            money = money*8/10;
            cout << '$' << floor (money)/100 << endl;
        }
        else
        {
            money = money*6/10;
            cout << '$' << floor (money)/100 << endl;
        }
    }
    return0;
}
 
用了floor函數還是錯誤==

因為你在前面的計算已經先做了乘除 那個時候數字就開始不精確了

double還是會有很些微的誤差值 所以你做折扣後就會差個0.01

這個時候向下取整也沒有用

#20554: Re:WA(line:79)


t855000@gmail.com (RosaPigg)


#include
#include
#include

using namespace std;

int main()
{
    double money = 0;

    while(cin>>money)
    {
        cout << fixed << setprecision(3);
        money = money*100;
        if(money<=10000)
        {
            money = money*9/10+800;
            cout << '$' << floor (money)/100 << endl;
        }
        elseif(money<=50000)
        {
            money = money*8/10;
            cout << '$' << floor (money)/100 << endl;
        }
        else
        {
            money = money*6/10;
            cout << '$' << floor (money)/100 << endl;
        }
    }
    return0;
}
 
用了floor函數還是錯誤==

因為你在前面的計算已經先做了乘除 那個時候數字就開始不精確了

double還是會有很些微的誤差值 所以你做折扣後就會差個0.01

這個時候向下取整也沒有用

哥 你真厲害