如果我输入值:3.123456789012345e-09
我应该回来3.12345678901235e-09
但是只会四舍五入到.6到.9
ostringstream os;
double d = 3.123456789012345e-09 ;
os << setprecision( 15 );
os << d;
istringstream is ( os.str() );
is >> setprecision( 15) >> d;
std::cout << d << std::endl;
真正可笑的事情是: 舍入行为根据幂而变化:
3.123456789012345e-09 = 3.12345678901234e-09
3.123456789012345e-10 = 3.12345678901234e-10
3.123456789012345e-11 = 3.12345678901235e-11
3.123456789012345e-14 = 3.12345678901235e-14
每1000次幂正确舍入...我很困惑。我知道,取整有点怪异,但是我无法对此做出正面或反面的解释。在64位机器上顺便说一句。