2015-01-21 61 views
1

나는 그런 출력 받으실 다음 코드를 실행하면 다음과 같이setprecision 및 부동 소수점

Desired output: 
Car  Hours Charge 
1  1.5  2.00 
2  4.0  2.50 
3  24.0  10.00 

을하지만 결과가 나온다 올바른 부동 소수점 비교 사용 고정 정밀도 올바르게 사용하십시오 elcome.

int main() 
{ 
    double hour[3]; 
    double charge[3]; 

    double sum_hour = 0; 
    double sum_charge = 0; 

    for (int i = 0; i < 3; i++) 
    { 
     cout<<"Enter the hours for car No. "<<i<<": "; 
     cin>>hour [i]; 

     if (hour [i] <= 3) 
      {charge [i] = 2.00;} 
     if (hour [i] > 3 && hour [i] < 24) 
      {charge [i] = (2.00 + (ceil(hour [i] -3))*0.5);} 
     if (hour [i] == 24) 
      {charge [i] = 10.00;} 

     sum_hour = sum_hour + hour [i]; 
     sum_charge = sum_charge + charge [i]; 
    } 

    cout<<"Car"<<setw(10)<<"Hours"<<setw(10)<<"Charge"<<endl; 

    for (int i = 0; i < 3; i++) 
    { 
     cout<<i+1<<setw(10)<<setprecision(1)<<hour[i]<<setw(10)<<setprecision(2)<<charge[i]<<endl; 
    } 
    cout<<"TOTAL"<<setw(6)<<sum_hour<<setw(10)<<sum_charge<<endl; 

} 
+0

나는 codeblocks의 코드를 실행했습니다. 나는 단지 부동 소수점과 setprecision의 조정을 배우는 중이다 – SRYZDN

답변

3

std::setprecision가 표시되는 유효 숫자의 총 수를 설정합니다.

는 소수점 뒤에 표시 자릿수, std::fixed를 사용 설정하려면 다음

std::cout << std::fixed << std::setprecision(2) << 24.0; 

가 표시됩니다

24.00 
+0

표준 출력에 고정 된 형식으로 되돌릴 수있는 방법은 무엇입니까? – user3895596

+1

@ user3895596 : 기본 부동 소수점 형식으로 돌아가려면 ['std :: defaultfloat'] (http://en.cppreference.com/w/cpp/io/manip/fixed)를 사용할 수 있습니다. –

1

당신은 단지 왔을 때 cout을 쓰기 자리를 만들기 위해 기능 fixed 필요 '0'.

그래서 다음과 같이 사용 : (. 즉, 소수점 이전의 것들을 포함) 기본적으로

cout << fixed; 
cout<<i+1<<setw(10)<<setprecision(1)<<hour[i]<<setw(10)<<setprecision(2)<<charge[i]<<endl;