0.77777777
输出为 77.77%有没有已经存在的函数, 可以直接用的?
toString("P2")  会四舍五入的...
不要四舍五入....分不少, 散点儿...呵呵

解决方案 »

  1.   

    using System;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(GetPercent("0.77777777"));
                Console.WriteLine(GetPercent("0.701"));
                Console.Read();
            }        public static string GetPercent(string input)
            {
                double d;
                if (double.TryParse(input, out d))
                {
                    string temp = (d * 100).ToString();
                    return temp.Substring(0, Math.Min(temp.IndexOf('.') + 3,temp.Length)) + "%";
                }
                return null;
            }
        }
    }
      

  2.   

    先谢了,cppfaq!
    字符串截取, 我也知道的, 但我想知道是否有现成的函数可用? 
      

  3.   

    顶楼上的。你可以参考。你如果想保留二位小数,可以,先×100之后,toInt32会自动四舍五入,之后,再除以100保留两个小数,就可以了啊。如此类推。
      

  4.   

    js 的 function FormatNumber(srcStr,nAfterDot){
      var srcStr,nAfterDot;
      var resultStr,nTen;
      srcStr = ""+srcStr+"";
      strLen = srcStr.length;
      dotPos = srcStr.indexOf(".",0);
      if (dotPos == -1){
        resultStr = srcStr+".";
        for (i=0;i<nAfterDot;i++){
          resultStr = resultStr+"0";
        }
      }
      else{
        if ((strLen - dotPos - 1) >= nAfterDot){
          nAfter = dotPos + nAfterDot + 1;
          nTen =1;
          for(j=0;j<nAfterDot;j++){
            nTen = nTen*10;
          }
          resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
        }
        else{
          resultStr = srcStr;
          for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
            resultStr = resultStr+"0";
          }
          
        }
      }
     
     return resultStr;}
      

  5.   

    js 的 第2 个function myround(const yuan: Extended; const pp: Integer): Extended;
    //yuan:原浮点数,PP保留 小数点后第几位
    var
     p,l,m,l2:Longint;
     s:string; // 原浮点数
     sq:string; // 小数点前
     sh:string;//小数点后
    begin
     if yuan=0 then exit;// 原浮点数 0
     if pp<0 then exit; //非法小数点后第几位
     s:=floattostr(yuan);
     p:=pos('.',s);   //小数点位置
     sq:=midstr(s,1,p-1);
     sh:=midstr(s,p+1,length(s)-length(sq)-1);
     l:=length(sh);//小数位数
     l2:=length(sq);//整数位数
     if pp>=l then
      begin//0
       result:=strtofloat(s);
       exit;//比如 11。06 要保留到 小数点后第3位显然 不合理
      end;//
    { if pp=l then  //比如 11。06 要保留到 小数点后第2位不用处理 直接返回
       begin//1
         Result:=s;
         exit;
       end;//1 }
      if pp<l then //比如 11。06 要保留到 小数点后第1位 ,
      begin//2
        m:=strtoint(sh[pp+1]);
        if m>=5 then
        begin
          if pp>=1 then //保留到 小数点后第1,2位
          begin//3
           sh:=midstr(sh,1,pp);
           sh := inttostr(strtoint(sh)+1);
           if length(sh)>pp then
           begin
              sh:= midstr(sh,2,pp);
              sq:= inttostr(strtoint(sq)+1);
           end;
          Result:=strtofloat(sq+'.'+sh);
          exit;
          end//3
          else  //保留到 小数点后第0位
          begin//4
           sq[l2]:=chr(ord(sq[l2])+1);
           Result:=strtofloat(sq);
           exit;
          end;//4
        end
        else
        begin
          if pp>=1 then //保留到 小数点后第1,2位
          begin//3
           sh:=midstr(sh,1,pp);
           Result:=strtofloat(sq+'.'+sh);
          exit;
          end//3
          else  //保留到 小数点后第0位
          begin//4
           Result:=strtofloat(sq);
           exit;
          end;//4
        end;
      end;//2
    end;
      

  6.   

    自写写一个。Convert.Toint32(number * 100) / 100 ;
      

  7.   

    12345.ToString("p"); //生成 1,234,500.00%
      

  8.   


    double x = 0.77777777;
    string s = ((int)(x * 10000) / 10000.0).ToString("P2");
      

  9.   

    这是一个下切的功能。
    .NET中只提供了返回整数的方法:Math.Floor()。
    想要实现下切小数的功能,一般是先乘,再切,后除。 
      

  10.   

    string num=(0.77777777 * 100).ToString("f10");
    Match m = Regex.Match(num, "\\d+[.]\\d{1,2}");
    if (m.Success)
    {
       num = m.Value;
    }
               
    Console.WriteLine(num + "%");
      

  11.   

    这个方法绝对简单好用
    decimal num = Convert.ToDecimal(0.77777777*10000);
    num = decimal.Floor(num) / 100;
    Console.WriteLine(num + "%");
    Console.Read();
      

  12.   

    decimal co=Convert.ToDecimal(0.7777)*100;
    co=Math.Round(co,2);
    string per=co.ToString()+"%";;
      

  13.   

    float   bf1=1234.5678;   
      string   bs1=bf1.ToString("0.00");
      

  14.   

    转成 Decimal 类型 应该就不会了
      

  15.   

    谢谢楼上各位朋友我用了一个简单点儿的方法.
    decimal xint = 0.777777M;
    xint = xint*10000;
    xint = Math.Floor(xint);
    xint = xint/10000;
    Console.WriteLine(xint .ToString ("P2"));
    结贴给分!