int main(){
std::string text = "15555555.2587";
std::stringstream ss;
double number;
ss << text;
ss >> number;
std::cout << std::fixed << std::setw( 11 ) << std::setprecision( 6 )
<< std::setfill( '0' ) << number<<endl;
return 0;
}
上述程序的输出为15555555.0000
它会截断小数点后的值。
如何获得正确的值?
答案 0 :(得分:3)
number
符合预期的正确价值。问题是你应该用cout
以这种方式打印它:
std::cout << std::fixed << std::setprecision(4) << number;
输出
155555.2587
答案 1 :(得分:1)
正如Alan Stokes所说,流被配置为默认打印带有6位十进制数的浮点值。您可以通过std::setprecision()
之类的流操纵器修改此行为:
int main()
{
float pi = 3.141592654;
std::cout << std::fixed << std::setprecision( 4 ) << pi << std::endl;
}
上面的代码打印:
3,1416