c++ 浮点数转换成char形数组

来源:百度知道 编辑:UC知道 时间:2024/06/20 21:14:27
long double c3=8.203125e+019
char cc0[50];
stringstream ss;
ss<<c3;
ss>>cc0;
为什么 输出后cc0的结果是8.20313e+019
怎样保持转化后的精度啊

因为默认精度是6,所以你要自己设置精度,设为7就好了
用.precision()

#include <iostream>
#include <sstream>
using namespace std;
int main()
{
long double c3=8.203125e+019;
char cc0[50];
stringstream ss;
ss.precision(7);
ss<<c3;
ss>>cc0;
cout <<cc0;
}

float

就用最原始的方法, 一个个往数组里面加呗。

-------------------------------------------------------------------
我觉得,如果有可能,还是只能先将其转换成整数,
再利用取模,求余。

最后加上一个小数点就可以了~~

之所以会出现你的那种原因,是因为double型和float型的存储方式和int型是完全不一样的。。

浮点数的表述本来就是不准确的。
你达到这个精度也是被系统所能接受的。

long double c3=8.203125e+019 ;
cout<<c3<<endl;
char cc0[50];
sprintf_s( cc0,50,"%lf",c3 );

cout<<cc0<<endl;