如题,C++ 中的数据怎样以浮点小数输出,而不用科学计数法,也不是用定点小数。
比如:
double dNum1=0.00003,dNum2=0.0006
cout<<dNum1; //屏幕显示3e-05,而不是0.00003
cout<<dNum2; //屏幕显示0.0006
用setiosflags(ios::fixed)可以控制定点小数格式,但使用后dNum2会输出0.00060,后面的0并不是需要的。
如果可以解答,追加分数,谢谢各位大神!
先谢谢各位。
其实我原本目的是将double转为长度有限制的string输出,但是要保持小数形态,当然如果有整数的话当然也要正常输出整数,总之不能用科学计数法。
我采用的是stringstream流转换,因为想到这是一个流输出格式控制的问题,提问的时候便用更有代表性的iostream代替,可能造成各位在帮忙的时候走了些弯路,在此抱歉。
一楼的程序缺点是无法处理比较大的整数,且稍嫌麻烦,可能是我开始的问题没说清楚让你想多了(我还是想不到我的要求特别在哪里,呵呵),我原来想到的是二楼大神的方法,但希望有更简便的方式,因为我的程序可能会有上万个数据流过,希望这一步的处理越高效越好。我的C++水平不高,恳请各位指教。
呵呵,因为用途不一样。我在做数据接口,要将double数据转成字符串型式存储而非输出,而转存的字符串长度是有限制的,所以我希望不必要的字符越少越好。
具体说来,我有一堆double数据(无法预知数值范围),需要分别将其转换为几组不同长度(已知)的字符串,将来其他程序要从这些字符串读出原有的double型数据以便进行计算,所以在第一步double到string时,精度损失越小越好。
请问你有什么比较好的思路吗?
1、我明白了你目的,必须要做的是从double到string的转换,看来这是绕不过去了,所以我认为那个多余的0是不可避免的,setprecision这个函数是需要的,还得回到字符串删除0的问题上。我想这是最快的办法了。
2、“几组不同长度(已知)的字符串”是什么意思?
“几组不同长度(已知)的字符串”意思就是对于同一个double数,如0.00003,有时需要转为“0.0000”(6位,算小数点,下同),有时转为“0.00003”(7位),有时是“0.000030(8位),视要求而定。
可能我问题没说清楚吧,我就是流转换时出现了问题,呵呵。
不好意思,试验后感觉与 setiosflags(ios::fixed) 效果是一样的。