似乎无法精确排列小数
Can't seem to line up decimal numbers precisely
我有一个简单的程序,它询问电影的名称,以及 set1 和 set2 的售票数量。然后它对这些值进行一些计算并显示结果。我遇到的唯一问题是我似乎无法按照我希望的方式排列十进制值。
控制台中的最后三行输出应始终如下所示(美元符号和小数点对齐):image. But when I input 1 for set1 of tickets, and 0 for set2 of tickets and vice versa, it looks like this instead: image。关于如何使输出始终像第一个屏幕截图那样很好地排列的任何想法?提前致谢。
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
string film = "";
int set1 = 0;
int set2 = 0;
// the cinema always takes this 20% cut.
const double CINEMA_FEE = 0.20;
double profit = 0;
double profitMinusFee = 0;
double paidToMovieMaker = 0;
cout << "What is the name of the film: ";
getline(cin, film);
cout << "How many tickets for set1 sold: ";
cin >> set1;
cout << "How many tickets for set2 sold: ";
cin >> set2;
cout << "Film Name:" << setw(20) << "\"" << film << "\"" << endl;
cout << "Set1 tickets sold:" << setw(16) << set1 << endl;
cout << "Set2 tickets sold:" << setw(16) << set2 << endl;
set1 *= 10;
set2 *= 6;
profit = set1 + set2;
profitMinusFee = profit * CINEMA_FEE;
paidToMovieMaker = profit - profitMinusFee;
// needs to always show two decimal points and fixed
cout << setprecision(2) << fixed;
cout << "The total monetary profit:" << setw(5) << "$ " << profit << endl;
cout << "The net monetary profit:" << setw(7) << "$ " << profitMinusFee << endl;
cout << "Total paid to movie maker:" << setw(5) << "$ " << paidToMovieMaker << endl;
return 0;
}
我认为你的问题是你在美元符号而不是数字上设置宽度。
这似乎为我解决了这个问题:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
string film = "";
int set1 = 0;
int set2 = 0;
// the cinema always takes this 20% cut.
const double CINEMA_FEE = 0.20;
double profit = 0;
double profitMinusFee = 0;
double paidToMovieMaker = 0;
cout << "What is the name of the film: ";
getline(cin, film);
cout << "How many tickets for set1 sold: ";
cin >> set1;
cout << "How many tickets for set2 sold: ";
cin >> set2;
cout << "Film Name:" << setw(20) << "\"" << film << "\"" << endl;
cout << "Set1 tickets sold:" << setw(16) << set1 << endl;
cout << "Set2 tickets sold:" << setw(16) << set2 << endl;
set1 *= 10;
set2 *= 6;
profit = set1 + set2;
profitMinusFee = profit * CINEMA_FEE;
paidToMovieMaker = profit - profitMinusFee;
// needs to always show two decimal points and fixed
cout << setprecision(2) << fixed;
cout << "The total monetary profit: $ " << setw(10) << profit << endl;
cout << "The net monetary profit : $ " << setw(10) << profitMinusFee << endl;
cout << "Total paid to movie maker: $ " << setw(10) << paidToMovieMaker << endl;
return 0;
}
记住 setw()
会影响 在 之后发生的事情。
我有一个简单的程序,它询问电影的名称,以及 set1 和 set2 的售票数量。然后它对这些值进行一些计算并显示结果。我遇到的唯一问题是我似乎无法按照我希望的方式排列十进制值。
控制台中的最后三行输出应始终如下所示(美元符号和小数点对齐):image. But when I input 1 for set1 of tickets, and 0 for set2 of tickets and vice versa, it looks like this instead: image。关于如何使输出始终像第一个屏幕截图那样很好地排列的任何想法?提前致谢。
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
string film = "";
int set1 = 0;
int set2 = 0;
// the cinema always takes this 20% cut.
const double CINEMA_FEE = 0.20;
double profit = 0;
double profitMinusFee = 0;
double paidToMovieMaker = 0;
cout << "What is the name of the film: ";
getline(cin, film);
cout << "How many tickets for set1 sold: ";
cin >> set1;
cout << "How many tickets for set2 sold: ";
cin >> set2;
cout << "Film Name:" << setw(20) << "\"" << film << "\"" << endl;
cout << "Set1 tickets sold:" << setw(16) << set1 << endl;
cout << "Set2 tickets sold:" << setw(16) << set2 << endl;
set1 *= 10;
set2 *= 6;
profit = set1 + set2;
profitMinusFee = profit * CINEMA_FEE;
paidToMovieMaker = profit - profitMinusFee;
// needs to always show two decimal points and fixed
cout << setprecision(2) << fixed;
cout << "The total monetary profit:" << setw(5) << "$ " << profit << endl;
cout << "The net monetary profit:" << setw(7) << "$ " << profitMinusFee << endl;
cout << "Total paid to movie maker:" << setw(5) << "$ " << paidToMovieMaker << endl;
return 0;
}
我认为你的问题是你在美元符号而不是数字上设置宽度。
这似乎为我解决了这个问题:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
string film = "";
int set1 = 0;
int set2 = 0;
// the cinema always takes this 20% cut.
const double CINEMA_FEE = 0.20;
double profit = 0;
double profitMinusFee = 0;
double paidToMovieMaker = 0;
cout << "What is the name of the film: ";
getline(cin, film);
cout << "How many tickets for set1 sold: ";
cin >> set1;
cout << "How many tickets for set2 sold: ";
cin >> set2;
cout << "Film Name:" << setw(20) << "\"" << film << "\"" << endl;
cout << "Set1 tickets sold:" << setw(16) << set1 << endl;
cout << "Set2 tickets sold:" << setw(16) << set2 << endl;
set1 *= 10;
set2 *= 6;
profit = set1 + set2;
profitMinusFee = profit * CINEMA_FEE;
paidToMovieMaker = profit - profitMinusFee;
// needs to always show two decimal points and fixed
cout << setprecision(2) << fixed;
cout << "The total monetary profit: $ " << setw(10) << profit << endl;
cout << "The net monetary profit : $ " << setw(10) << profitMinusFee << endl;
cout << "Total paid to movie maker: $ " << setw(10) << paidToMovieMaker << endl;
return 0;
}
记住 setw()
会影响 在 之后发生的事情。