【发布时间】:2023-03-09 18:27:01
【问题描述】:
我想知道为什么std::put_money() 函数接受美分而不是美元。还有looking at the definition on cppreference,没有说输入数字应该是什么。
无论使用哪种货币,我们都必须使用该货币的尽可能低的十进制值,这是真的吗? (即 * 1.0、* 100.0 或 * 1000.0 视情况而定?)因为这似乎包含了与当前语言环境相反的货币知识...
【问题讨论】:
-
这是
std::money_put的文档。 This 是std::put_money的文档 -
好吧,用 (
long)double来表示美元是个坏主意,用它来表示美分通常没问题 - 整数可以用double完美表示,而且时间不长double是表示相当大整数的最佳基本类型(当您的long是 32 位并且您没有更大的整数时,53 位尾数不会浪费)。 -
看起来 C++ 标准库的这一部分在 cppreference 上没有很好的记录。直接查阅标准 (eel.is/c++draft/category.monetary) 可能是个好主意,并用找到的内容更新 cppreference(这是一个 wiki)
-
@Justin:TBH,我并不感到惊讶——C 和 C++ 语言环境是一个破碎的、复杂的混乱,没有达到任何合理的预期,而货币格式可能是它们功能中最没用的;无论系统范围内设置何种货币,我从来没有或编写过一个必须“一般”显示货币价值的程序。
标签: c++ locale money-format