我被搞清楚log(3)
和log10(3)
之间的差异,使用此代码:为什么std :: cout打印4.9999999为5?
void testPrecisionError() {
cout
<< log(243)/log(3) << " : "
<< int(log(243)/log(3)) << " : "
<< endl;
cout
<< log10(243)/log10(3) << " : "
<< int(log10(243)/log10(3)) << " : ")
<< endl;
}
的输出是:
5 : 4 // I think it is 4.999999 underlying
5 : 5
我发现4.999999
被打印出来5
。
为什么C++不像Java那样将其打印为4.99999
?
我想我不能再更多cout
来说服自己,没有任何的PRECISON LOSS!
默认精度为6. –
为什么C++不像Java那样打印4.99999? –
4.99999只有5位数的精度,而不是6,如默认值C –