C++ 的精度
我在我的 C++ 代码中有这个查询:
query << "UPDATE currency SET value= " << currencyValue
currencyValue 被定义为“const double¤cyValue
”,当我观察该值时,
0.00045545105422339915
但是如果我检查查询的值,那么我会得到类似这样的
UPDATE currency SET value = 0.000455451
小数失踪了...
有什么想法吗?
I have this query in my C++ code:
query << "UPDATE currency SET value= " << currencyValue
currencyValue is defined as "const double& currencyValue
" and when I watch the value is
0.00045545105422339915
But if I check the value of the query then I get something like this
UPDATE currency SET value = 0.000455451
so decimals get missing...
Any ideas why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
货币值是双精度的,“更新货币设置值=”是字符串。从双精度数转换为字符串时精度会丢失。
您可以使用“std::set precision(20)”之类的内容或使用不同的函数将双精度数转换为字符串。
currencyValue is double, "UPDATE currency SET value= " is string. Precision is lost in conversion from double to string.
You can use something like "std::setprecision(20)" or use different function to convert double to string.
您可以尝试调用 set precision(10) (或您实际想要的任何值),然后再将双精度值输出到流中。
你可以这样做:
You can try calling setprecision(10) (or any value you actually want) on your stream before outputting the double value to it.
You can do it like this: