2012-05-01 4 views
0

Я работаю над программой, которая выводит общую сумму денег, потраченную на бензин, на значение, которое вводит пользователь. Я хочу, чтобы оно выдавало значение с двумя десятичными знаками, но программа обходит все, что не суммирует, а не выводит то, что должно быть. Я новичок и понятия не имею, почему он работает неправильно.Вывод значения с двумя десятичными знаками с использованием «double»

double gasPrice = 3.87; 
double gallonsPumped = 0; 



cout<<"How many gallons of gasoline (Diesel) were purchased today:"<<endl; 
cin>>gallonsPumped; 
int finalGasPrice = gasPrice*gallonsPumped; 

cout<<endl; 

if (gallonsPumped >= 1) 
{ 
    cout<<endl<<"The total cost for gasoline today was $"<<finalGasPrice<<"."<<endl; 
} 
else 
{ 
    cout<<"No money spent on gasoline today."; 
} 
+1

Попробуйте 'double finalGasPrice = gasPrice * gallonsPumped;' –

ответ

4

типа INT представляет собой целое число - то есть не десятичного знака, поэтому умножение округляется до ближайшего целого числа.

Вы хотите использовать поплавок или дважды: double finalGasPrice = gasPrice*gallonsPumped;

Чтобы получить выходной формат, чтобы показать ровно две цифры после запятой, а вы, вероятно, хотите использовать что-то вроде: cout << setiosflags(ios::fixed) << setprecision(2) << finalGasPrice;

+0

Вы можете просто использовать 'std :: cout << std :: fixed << ...' (а не 'setiosflags (ios :: fixed)' ... , –

1

целое число может содержать только целые числа: без десятичных дробей или фракций. Поэтому, когда вы устанавливаете finalgasprice, результат усекается до целого числа. Инициализация finalgasprice как двойника решит эту проблему. Вы также должны изменить '> = 1' на '> = 0', если только вы не хотите, чтобы платежи за доллар оставались незамеченными.

Смежные вопросы