如何在 C 中保持 Double 精度

发布于 2024-10-20 09:45:55 字数 415 浏览 0 评论 0原文

main()
{
   double d1 = 1234.1;
   cout << "d1 = 1234.1 --> " << d1 << endl;
   double d2 = 1234.099999;
   cout << "d2 = 1234.099999 --> " << d2 << endl;
}

输出:

d1 = 1234.1 --> 1234.1
d2 = 1234.099999 --> 1234.1

我实际上想打印 d2 的确切值,即 1234.099999 但没有得到相同的值。

请建议我如何获得准确的值。

main()
{
   double d1 = 1234.1;
   cout << "d1 = 1234.1 --> " << d1 << endl;
   double d2 = 1234.099999;
   cout << "d2 = 1234.099999 --> " << d2 << endl;
}

Output:

d1 = 1234.1 --> 1234.1
d2 = 1234.099999 --> 1234.1

I actually want to print the exact value of d2, i.e. 1234.099999 but not getting the same.

Please suggest how can I get the exact value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

╰沐子 2024-10-27 09:45:55

您需要 cout. precision http://www.cplusplus。 com/reference/iostream/ios_base/ precision/

另请注意,d2 不完全是 1234.099999,d1 不完全是 1234.1

浮点数会引入舍入误差,这就是为什么它们默认舍入到较少的位置,以尝试显示有意义的结果。

You want cout.precision http://www.cplusplus.com/reference/iostream/ios_base/precision/

Also note that d2 is not quite 1234.099999, and d1 is not quite 1234.1

Floating point numbers introduce rounding errors, which is why they round to fewer places by default, to try to display a meaningful result.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文