gpt4 book ai didi

c++ - 在 C++ 中如何对齐美元金额以使美分匹配?

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:09 26 4
gpt4 key购买 nike

我的程序执行得很好,但我想知道如何对齐我的输出以使美分而不是美元对齐。

我们几周前才开始上课,所以我们还没有复习这个。我的教授说如果他们不一致现在没关系,我想我只是强制症。另外,我认为它看起来干净多了。

另外,如果账单是 38.40 美元,那是四位有效数字吗?对不起,我有一段时间没学数学了。在我的输出中,出于某种原因,我得到了多达五个有效数字。我最多的是四个。我该如何解决这个问题,使用 setprecision?

cout << "Bill \t \t   $  " << bill << endl;
cout << "Tax at 10.5% \t \t $"<<tax<< endl;
cout << "Sub-total \t \t $"<<subTotal<< endl;
cout << "Tip at 20% \t \t $"<<tip<< endl;
cout << endl;
cout << "Total Bill \t \t \t $"<<totalBill<< endl;

如您所见,我一直在尝试使用制表符转义。正如回复所建议的,我应该使用 setw?

9/10 编辑:

除了帐单之外,我的所有美元金额都已四舍五入到小数点后两位,但我不知道如何解决。感谢您提供给我的所有信息,但是对于我们现在正在做的事情来说它太先进了,所以我只是手动调整了一些东西。我仍然需要添加 setw 然后修复一切。我只是问为什么账单只有三位数。这可能是一件非常简单的事情,让我一头雾水。

 // Declare variables
double bill, tax, subTotal, tip, totalBill;

// Variables
bill = 38.40;
tax = .105;
tip = .20;

// Calculate the tax
tax = bill * .105;

// Calculate sub-total of bill
subTotal = bill + tax;

// Calculate tip
tip = subTotal * .20;

// Calculate total amount of bill
totalBill = subTotal + tip;

cout << "Bill" " $ " << setprecision(4) << bill << endl;
cout << "Tax at 10.5%" " $ " << setprecision(3) << tax << endl;
cout << "Sub-total" " $ " << setprecision(4) << subTotal << endl;
cout << "Tip at 20%" " $ " << setprecision(3) << tip << endl;
cout << endl;
cout << "Total Bill" " $ " << setprecision(4) << totalBill << endl;

编辑:我“修复”了它。现在一切都很好。

最佳答案

如果你要印钱,我建议你看看 C++ 的 money I/O .
std::put_money 将确保您符合国际标准并以正确的舍入/精度打印。

为 USD 设置 std::cout 的语言环境。
std::showbase 将决定是否打印 $

  //settings for printing as USD
std::cout.imbue(std::locale("en_US.utf8"));
std::cout << std::showbase;

使用std::setwstd::left用于格式化。
这是打印数据的示例:

#include <iostream>
#include <string>
#include <iomanip>

//row data from example
struct Row{
std::string description;
float amount;
};

//function for printing a row
void Print(Row row);

int main(){

//example rows
Row a{"Bill",3840};
Row b{"Tax at 10.5%",403};
Row c{"Sub-total",4243};
Row d{"Tip at 20%",848};
Row e{"Total Bill",5091};

//settings for printing as USD
std::cout.imbue(std::locale("en_US.utf8"));
std::cout << std::showbase;

//format printing
Print(a);
Print(b);
Print(c);
Print(d);
std::cout << '\n';
Print(e);
}

void Print(Row row){
static const int COLUMN_WIDTH{14};
std::cout << std::setw(COLUMN_WIDTH) << std::left << row.description;
std::cout << " " << std::right << std::put_money(row.amount) << '\n';
}

结果:

Bill           $38.40
Tax at 10.5% $4.03
Sub-total $42.43
Tip at 20% $8.48

Total Bill $50.91

关于c++ - 在 C++ 中如何对齐美元金额以使美分匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39421550/

26 4 0
文章推荐: html - 使用
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com