gpt4 book ai didi

c++ - 在 C++ 中作为货币输出

转载 作者:行者123 更新时间:2023-11-30 05:36:48 27 4
gpt4 key购买 nike

我有一个简单的 C++ 命令行程序,我从用户那里获取输入,然后将其显示为价格、货币符号、逗号分隔每组 3 个值、一个小数点和两个小数位即使它们为零也显示。

我正在努力实现的示例:

100 => £100.00
101.1 => £101.10
100000 => £100,000.00

到目前为止,这是我的方法:

void output_price() {
int price;

cout << "Enter a price" << endl;
cin >> price;
string num_with_commas = to_string(price);
int insert_position = num_with_commas.length() - 3;
while (insert_position > 0) {
num_with_commas.insert(insert_position, ",");
insert_position -= 3;
}

cout << "The Price is: £" << num_with_commas << endl;
}

这部分工作但不显示小数点/位。

1000 => £1000

如果我将价格更改为 float 价格或双倍价格,它会给我这个:

1000 => £10,00.,000,000

我试图让事情变得简单并避免创建货币类,但不确定这在 C++ 中是否可行。

感谢任何帮助。

最佳答案

逻辑错误在这里:

int insert_position = num_with_commas.length() - 3;

num_with_commas 的原始值在点之后可以有任意数量的数字,包括根本没有点;此外,您无法控制它,因为the format applied by std::to_string is fixed .

如果您想继续使用 std::to_string,您需要做一些更改:

  • 找到点 '.' 字符的位置。
  • 如果点在那里,并且它后面的字符数小于 2,则继续附加零 "0" 直到点 '.' 是第三个字符从后面
  • 如果有点,并且后面有两个以上的字符,去掉字符串的尾部,使点后正好有两个字符
  • 如果点不存在,将 ".00" 附加到字符串

插入点的其余算法将正常工作。

关于c++ - 在 C++ 中作为货币输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454375/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com