形如:
string str = "1.00000001";
把str 的小数点保留两位.如下的方法就不用了.double d = 0;
try
{
d = convert.todouble(str);
}
catch{}string strRslt = d.ToString("f2");我总是觉得还是会有其它的方法的,可是我就是想不出来.
总是觉得这样的方法要把字符先转化为double ,再转为字符,这样会影响到性能.
请大家看看还有没有更好的方法.
string str = "1.00000001";
把str 的小数点保留两位.如下的方法就不用了.double d = 0;
try
{
d = convert.todouble(str);
}
catch{}string strRslt = d.ToString("f2");我总是觉得还是会有其它的方法的,可是我就是想不出来.
总是觉得这样的方法要把字符先转化为double ,再转为字符,这样会影响到性能.
请大家看看还有没有更好的方法.
str=String.Format("{0:N2}",Convert.ToDecimal(str));
这样是可以的.
double d = 1.00000001 ;
Console.WriteLine("{0:F2}",d);
的方法是正确的,
不过还有其它的方法吗?
if ((str.IndexOf(".") > -1) && (str.Length - str.IndexOf(".") > 2))
{
textBox2.Text = str.Substring(0, str.IndexOf(".") + 3);
}
else
{
textBox2.Text = str;
}
string resultStr = str;
Match m = Regex.Match(str, @"(\d+\.\d{2})\d*");
if(m.Success)
{
resultStr = m.Groups[1].Value;
}
richTextBox2.Text = resultStr;
老兄这个方法也是正确的.
大家还有什么其它的解吗?如果单纯的把把str 看作是一个字符串,这是没有问题的,
如果把这str 作为一个double 类型的数字的字符串,
还有什么方法.
希望大家不要认为我在找茬.我也只是想找到更多的方法去解决一个很简单的问题.
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毫秒级的