形如:
string str = "1.00000001";
把str 的小数点保留两位.如下的方法就不用了.double d = 0;
try
{
    d = convert.todouble(str);
}
catch{}string strRslt = d.ToString("f2");我总是觉得还是会有其它的方法的,可是我就是想不出来.
总是觉得这样的方法要把字符先转化为double ,再转为字符,这样会影响到性能.
请大家看看还有没有更好的方法.

解决方案 »

  1.   

    string str = "1.00000001";
    str=String.Format("{0:N2}",Convert.ToDecimal(str));
      

  2.   

    string str = "1.00000001";Console.WriteLine("{0:F2}",str);这样输出就是两位
      

  3.   

    mqcan(强者归来)老兄的方法好像不行.
    这样是可以的.
    double d = 1.00000001 ;
    Console.WriteLine("{0:F2}",d);
      

  4.   

    Zine_Alone(☆小飞☆) 
    的方法是正确的,
    不过还有其它的方法吗?
      

  5.   

    string str = textBox1.Text;
    if ((str.IndexOf(".") > -1) && (str.Length - str.IndexOf(".") > 2))
    {
        textBox2.Text = str.Substring(0, str.IndexOf(".") + 3);
    }
    else
    {
        textBox2.Text = str;
    }
      

  6.   

    or try........using System.Text.RegularExpressions;string str = textBox1.Text;
    string resultStr = str;
    Match m = Regex.Match(str, @"(\d+\.\d{2})\d*");
    if(m.Success)
    {
        resultStr = m.Groups[1].Value;
    }
    richTextBox2.Text = resultStr;
      

  7.   

    lxcnn(过客) 
    老兄这个方法也是正确的.
    大家还有什么其它的解吗?如果单纯的把把str 看作是一个字符串,这是没有问题的,
    如果把这str 作为一个double 类型的数字的字符串,
    还有什么方法.
    希望大家不要认为我在找茬.我也只是想找到更多的方法去解决一个很简单的问题.
      

  8.   

    Zine_Alone(☆小飞☆)  的方法没有在lz的基础改进。
      

  9.   

    str = str.Substring(0, str.IndexOf('.') + 3);
      

  10.   

    保留两位小数,如果不考虑四舍五入,那么Substring最快
    string str = "1.12";
    int i = str.IndexOf('.');
    if (i > 0 && i + 3 < str.Length)
        str = str.Remove(i + 3);否则用String.Format("{0:N2}", Convert.ToDecimal(str));总得来说用后者可读性、扩展性更好
    这两种方法一次计算的时间差别不过是0.00001毫秒级的