Pee*_*eeS 4 c++ floating-accuracy
我试图解决这个问题,市场数据将货币值返回为数字长度后8位的字符串.
money = "124.19000540"
Run Code Online (Sandbox Code Playgroud)
我需要这个是124.19,任何想法如何实现这一点?
std::stof(money) = 124.19000244
Run Code Online (Sandbox Code Playgroud)
怎么克服这个?
浮点类型不利于持有货币价值.如果你满足于四舍五入,并将钱存储为整数分钱(这是最简单的解决方案之一),你可以这样做:
long numCents = static_cast<long>(100 * std::stof(money))
Run Code Online (Sandbox Code Playgroud)
这将"截断"舍入,这总是向下舍入.如果您想要"舍入到最近的分数",请尝试:
long numCents = static_cast<long>(100 * std::stof(money) + 0.5)
Run Code Online (Sandbox Code Playgroud)
正如其他人提到的,你可能想要一个固定点或十进制库而不是这么简单的东西.