我写了一个去除小数点后的程序,如下CString temp;
int length;length=temp.GetLength();

while(length>=0)//字符串不为0
{
if(temp.GetAt(length-1)=='0')//取最后一个字符,判断如果是0
{
temp.Replace("0",NULL);//将0删除
length=temp.GetLength();//重新取得字符串的长度

}
else  if(temp.GetAt(length-1)=='.')//若遇到小数点就推出
break; }但是,它能删除小数点后的0,还会删除小数点之前末尾的0,比如2*5=1,我在这找不到小数点....这是怎么回事?

解决方案 »

  1.   

    若是找最后一个不是0的数,就能找到,下面写得就行,可是还是想知道为什么找不到小数点'.'是与转义字符有关系么?我试了也不行....
    CString temp; 
    int length; 
    int x;
    length=temp.GetLength();

    while(length>=0)
    {

    if(temp.GetAt(length-1)!='0')
    {
    x=length-1;
    break;

    }
    length=length-1;
    }
    temp.TrimRight('0');
      

  2.   

    CString temp; 
    int length; length=temp.GetLength(); while(length> =0)//字符串不为0 

    if(temp.GetAt(length-1)=='0')//取最后一个字符,判断如果是0 

    temp.Replace("0",NULL);//将0删除 这里是删除字符串里所有得0,而不是末尾得0length=temp.GetLength();//重新取得字符串的长度 } 
    else  if(temp.GetAt(length-1)=='.')//若遇到小数点就推出 这里是当小数点是最后一个字符才会有成功,否则啥也不干
    break; } 
      

  3.   

    CString CJSQDlg::ret(CString str){
     int a;
     a=str.GetLength();     //取出str的个数
     CString str1; 
     for(int i=1;i<=a;i++)  //把str从右开始取出存入str1每次存入都判断一次str1左边第一个字符是否等于0  {
      str1=str.Right(i);       str1=str1.Left(1);
      if(str1!="0")
      { 
       if(str1==".")
       {
        str=str.Left(a-i);
       }
       else
       {
       str=str.Left(a-i+1);
       }
       return str;
      }
     }
      return str;
    }