dim s as single = "20"
dim x as Decimal = Convert.ToDecimal(s)
response.write(x.ToString("##.00"))

解决方案 »

  1.   

    难道没有更直接一点的办法???
    用Convert.ToDecimal("20",IFomatProvider);的形式可不可以,
    这怎么用???
      

  2.   

    decimal dec;
    string decstr="100";
    dec=decimal.Parse (decstr);
      

  3.   

    看看这个可以吗
    Decimal d = Decimal.Parse(string.Format("{0}.00",str));
      

  4.   

    楼上的假如str是12.0呢?
    从String到Decimal必须用Parse方法,实际上Convert.ToDecimal(String)方法就是调用Decimal的Parse方法来实现的。如果想得到指定小数位的Decimal而String并不知道包含的小数位的话,可以先从String得到一个Decimal对象,然后用ToString来决定位数,再用Parse方法:
    String str = "12";
    Decimal d = Decimal.Parse(Decimal.Parse(str).ToString("0.00"));实际上12m和12.00m在内存是不一样的。12m的存储是:12,0,0,0;而12.00m的存储是1200,0,0,131072。
      

  5.   

    注意,标准答案来了:
    System.Globalization.NumberFormatInfo num=new System.Globalization.NumberFormatInfo();
    num.NumberDecimalDigits=2;
    str="12";
    decimal De=System.Decimal.Parse(str,num);
    MessageBox.Show(De.ToString());
      

  6.   

    楼上的,你知道为什么要NumberFormatInfo这个参数吗?可能这个你都没搞清楚。首先,在任何Parse方法都不会用到NumberDecimalDigits这个属性,这个属性是ToString("N", num)的时候用的,就是格式化数字时用到。再者,在Parse时用法如下:
    NumberFormatInfo num = new NumberFormatInfo();
    num.NumberDecimalSeparator = "#";
    String str = "12#00";
    Decimal d = Decimal.Parse(str, num);
    这样的结果是12.00,不会出错。也就是说NumberFormatInfo的属性有一些时专门为Parse提供,有些专门为ToString,有些两者都会用到。楼上的结果只能是12。
      

  7.   

    decimal.Round(decimal d,int i)
    d--要处理的decimal,i--要保留的小数位数
    str="12";
    decimal.Round(decimal.Parse(str),2);
      

  8.   

    Round是将 Decimal 值舍入到指定的小数位数,而不是扩展小数位数。但是版主要的是如果小于2位扩展到2位,如果大于2位舍入到2位。也就是可能出现扩展的情况。所以Round是绝对做不到的。楼上的结果还是12。