stringstream精度问题
生活随笔
收集整理的这篇文章主要介绍了
stringstream精度问题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
今天使用stringstream输出double,当小数位数很多的时候,会丢掉一些位数,原来“stringstream对象默认精度为6,而许多程序员错误地把“精度”理解为小数的位数,这是不正确的,精度应指代全部位数。因而,数字 1234.56可安全地通过默认精度6来表示,但12345.67会被截断为12345.6。这样的话,如果你有一个非常大的数,如1234567.8, 它的结果会静悄悄地转换为科学记数法:1.23457e+06,可以重新设置精度
int prec=numeric_limits::digits10; // 18ostringstream out;
out.precision(prec);//覆盖默认精度
out<<value;
string str= out.str(); //从流中取出字符串 数值现在存储在str中,等待格式化。
”以上内容引自http://blog.sina.com.cn/s/blog_4f183d960100lxh9.html
转载于:https://www.cnblogs.com/coolbear/archive/2013/02/26/2933333.html
总结
以上是生活随笔为你收集整理的stringstream精度问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 移位指令实现乘法
- 下一篇: APL开发日志 -- 2013-03-0