gpt4 book ai didi

c++ - 从文件中读取固定点的固定 double 并转换为长

转载 作者:行者123 更新时间:2023-11-30 03:38:02 25 4
gpt4 key购买 nike

我正在从文件中读取美元价格。示例

asset_jsld 40.54
asset_sxd 40.80

我想要一个以这些价格作为键的 map 。由于 floatdouble 小于 ideals 键,我将我的值转换为美分,并将它们存储为 longwords 是原始文件按列排列的 string 列表。

using boost::spirit::qi::parse;
// ...
if (!parse(words[1].begin(), words[4].end(), double_, price_d))
// Error handeling
long price = boost::numeric_cast<long>(price_d * 100.0);

问题是 double 是 40.80 而 long4079。此舍入错误是否来自 numeric_cast?有数值稳定的替代方案吗?

最佳答案

如果您想要一致性,请不要对 float 进行数学运算。将值作为字符串读取,删除点并将其解析为 long

Is floating point math broken?

关于c++ - 从文件中读取固定点的固定 double 并转换为长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821502/

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