如题,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) 效果是一样的。
...中的数据怎样以浮点小数(而不是定点小数)输出,而不用科学计数法?
用setf 方法 cout.setf(ios_base::fixed,ios_base::floatfield);它会覆盖cout 的默认设置,响应随实现而异
...中的数据怎样以浮点小数(而不是定点小数)输出,而不用科学计数法?
C和C++提供的对齐函数挺好的嘛,使你的数据显示的时候很整齐,要不然显的很杂乱。想要达到一定的目的,常常是要做出相应的代价的。另外,就是在数据位数很多的时候如,0.00000123456789,即使是科学计数法也会默认的取6位有效数字,要想显示全部位数,要么setprecision(n),这样有些数据后面有你不想要的0:...
c++浮点数存储方式
在处理这种不带小数的浮点数时,直接将整数部转化为二进制表示:1 11100010 01000000也可以这样表示:11110001001000000.0然后将小数点向左移,一直移到离最高位只有1位,就是最高位的1:1.11100010010000000一共移动了16位,在布耳运算中小数点每向左移一位就等于在以2为底的科学计算法表示中指数+1,所以原数就等于这样...
浮点数在计算机中是如何表示的?
下面我仅以float(带符号,单精度,32位)类型的浮点数说明C++中的浮点数是如何在内存中表示的。先讲一下基础知识,纯小数的二进制表示。(纯小数就是没有整数部分的小数,讲给小学没好好学的人)纯小数要想用二进制表示,必须先进行规格化,即化为 1.xxxxx * ( 2 ^ n ) 的形式(“^”代表乘...
c++中如何精确输出的位数?
\/\/fixed:表示普通方式输出,不采用科学计数法。fixed也可以放在setprecision(n)后面 cout<<" 12345.0保留8位有效数字输出为:"<<12345.0<<endl;cout<<fixed<<setprecision(2)<<" -123.456保留2位有效数字输出为:"<<-123.456<<endl;cout << setprecision (4); \/\/ 精度 cout.setf(ios...
C++中double型数值两种输出格式中,何时用指数形式,何时用小数点形式...
ios::showpoint 指定浮点数输出时应带小数点。这通常和ios::fixed一起使用保证小数点后面有一定位数 ios::uppercase 指定表示十六进制Rx应为大写,表示浮点科学计数法的e应为大写 ios::showpos 指定正数和负数前面分别加上正号或-号 ios::scientific 指事实上浮点数输出采用科学计数法 ios::fixed 指...
c++中如何输出一个八位小数
fixed:表示普通方式输出,不采用科学计数法。setprecision:控制输出流显示浮点数的数字个数,如果和fixed合用的话,可以控制小数点右面的位数。include<iostream>#include<iomanip>using namespace std;int main(){cout<<12345.0<<endl;\/\/输出12345\/\/cout<<fixed<<setprecision(2)<<123.456<<endl;\/*...
C++编程中setprecision(0)什么意思?
在C++编程中,`setprecision(n)`是一个强大的工具,它用于控制浮点数在输出流中的精确度。默认情况下,C++的输出流会显示6位有效数字。当你将`setprecision(n)`与`setiosflags(ios::fixed)`一起使用时,它会限制小数点右边的数字个数,将数值以定点方式表示。如果与`setiosflags(ios::scientific)`配合...
c++输出中怎么控制小数点后面的位数?
1、首先,定义三个实数型变量,保存计算的数值。2、接着,给x和y赋值。3、对x和y进行除法运算,保存在变量z中。4、最后,输出变量z的值。5、运行程序,可以看到计算得到的数值,小数点后位数是默认的。6、可以在%之后,添加数值的小数点后位数。7、运行程序,输出实数的小数点后位数,按照设定的值...
请教一个C++中的问题,setiosflags(ios::fixed)与fixed
设置浮点数以固定的小数位数显示