C++ 的精度

发布于 2024-11-24 05:49:12 字数 382 浏览 1 评论 0原文

我在我的 C++ 代码中有这个查询:

 query << "UPDATE currency SET value= " << currencyValue

currencyValue 被定义为“const double&currencyValue”,当我观察该值时,

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无法回应 2024-12-01 05:49:16

货币值是双精度的,“更新货币设置值=”是字符串。从双精度数转换为字符串时精度会丢失。
您可以使用“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.

掐死时间 2024-12-01 05:49:15

您可以尝试调用 set precision(10) (或您实际想要的任何值),然后再将双精度值输出到流中。

你可以这样做:

#include <iomanip>
query << "UPDATE currency SET value= " << std::setprecision(10) << currencyValue;

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:

#include <iomanip>
query << "UPDATE currency SET value= " << std::setprecision(10) << currencyValue;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文