如何在 C 中保持 Double 精度
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要
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.