如题,比如数字:123.0123456789
转换后的字符串是“123.0123456789” ,
再如 :123.10230000
要转换成“123.1023” .
mfc有没有现在的函数呢???
如果没有,怎么转换效率最好???
在些先谢谢啦...
转换后的字符串是“123.0123456789” ,
再如 :123.10230000
要转换成“123.1023” .
mfc有没有现在的函数呢???
如果没有,怎么转换效率最好???
在些先谢谢啦...
double d1=123.0123456789,d2=123.10230000;
char buf[64];
sprintf(buf,"%0.32f",d2);
int n=strlen(buf)-1;
while(n>=0&&buf[n]=='0')
n--;
buf[n+1]=0;
printf(buf);
printf("\n");
比如数字为 1.01
转换后变成1.010000
这不是我想要的,
还有比如 1.23456789011222122222201000111111
转换后变成 1.234568
这也不是我想要的,
你可能说给个很长的格式如0.100lf这样的,之后再把没用的0去掉
除了这样的办法还有没有别的呢???
这个方法不想用
浮点数转换的小数位数可以自己指定的
CString str;
float fdata = 1.001000;
str.Format("%.3f", fdata); // 三位小数,转换后str 就是 "1.001"了
str.Format("%.5", fdata); // 五位小数,转换后str 就是 "1.00100"了
好好研究下吧,Format的功能强大着呢
这样的format也不是没有它的用处,不过对我来说这样的功能不能没足我的要求啊
因为我要转换的float型的后面小数点是不定的,可有有可以没有
所在,怎么可能对每个数字进行设定一个标准来转换呢???
不要忘记了我要的结果是不要那么没用的0
这样format就不能做到了
除非它有一个auto什么的格式可以自动把没用的0去掉,这样就好啊
你再自己把后面的零去掉就可以了,比如说
int ReverseFind( TCHAR ch ) const;
和
CString Left( int nCount ) const;可以实现这项功能,代码也比较简单
函数接口为str,对str后面没用的0清除,如果遇到'.'也删除就行
数字转换格式为:
m_str.Format(_T("%lf"),m_integer); //把数字转换成字符串ClearZero(CString& str)
{
for(int i=str.GetLength()-1;i>=0;i--)
{
if(str[i]=='0') //最后有没用的0就清除
{
str.Delete(i,1); //删除0
}
else
{
if(str[i]=='.') //去掉没用的小数点
str.Delete(i);
break; //否则退出
}
}
}
m_str.Format(_T("%lf"),m_integer); //把数字转换成字符串
默认的只能是后六位小数点,可我想高上点精度的
如果设置成str.Format(_T("0.50lf"),double);
会出现问题,比如:
实际数字是0.001,转换后结果变成:0.0010000000000000002
用的就是str.Format(_T("0.50lf"),double);
测试了double是0.001,已经对str进行了初始化
为什么结果会变呢???
再来一张:
怎样设置才有效啊??
就是说后后面的小点要保留多少位才不会出错啊
std::ostringstream os; os << id;
std::string strValue= os.str();