如何保持双的精度在C++
main()
{
double d1 = 1234.1;
cout << "d1 = 1234.1 --> " << d1 << endl;
double d2 = 1234.099999;
cout << "d2 = 1234.099999 --> " << d2 << endl;
}
输出:如何保持双的精度在C++
d1 = 1234.1 --> 1234.1
d2 = 1234.099999 --> 1234.1
其实我是想打印的d2
的精确值,即1234.099999
,但没有得到相同的。
请建议我如何得到确切的价值。
你想cout.precision
http://www.cplusplus.com/reference/iostream/ios_base/precision/
还要注意的是D2是不太1234.099999和D1是不太1234.1
浮点数引入舍入误差,这就是为什么他们四舍五入到较少的地方在默认情况下,以尝试显示有意义的结果。
谢谢回复。其实我有要求在字符缓冲区中存储值(1234.099999),但我得到(1234.1)在缓冲区中,这对我造成了问题。我怎样才能在没有四舍五入的情况下回顾确切的价值。 – 2011-03-04 10:21:13
所以你想把它存储为一个字符串而不是双?这可以通过像'std :: string d2 =“1234.099999”;'? – Tim 2011-03-04 15:57:54
你的代码中有东西会丢失吗?没有什么可以让你在那里得到d2。 – murrekatt 2011-03-04 07:43:31
你可能想看看这个线程:http://stackoverflow.com/questions/4217510/how-to-cout-the-correct-number-of-decimal-places-of-a-double-value – Chan 2011-03-04 09:20:40