在C#中将字符串转换为2位小数的最有效方法

时间:2009-04-02 19:36:16

标签: c# string

我有string,需要输入小数位才能得到2的精度。

3000 => 30.00
 300 =>  3.00
  30 =>   .30

3 个答案:

答案 0 :(得分:14)

给定字符串输入,转换为整数,除以100.0并使用String.Format()使其显示两位小数。

String.Format("{0,0:N2}", Int32.Parse(input) / 100.0)

更智能,无需来回转换 - 用零填充字符串至少两个字符,然后从右边插入两个字符。

String paddedInput = input.PadLeft(2, '0')

padedInput.Insert(paddedInput.Length - 2, ".")

填充长度为3以获得前导零。在扩展方法中填充精度+ 1以获得前导零。

作为一种扩展方法,只是为了踢。

public static class StringExtension
{
  public static String InsertDecimal(this String @this, Int32 precision)
  {
    String padded = @this.PadLeft(precision, '0');
    return padded.Insert(padded.Length - precision, ".");
  }
}

// Usage
"3000".InsertDecimal(2);

注意:PadLeft()是正确的。

PadLeft()   '3' => '03' => '.03'
PadRight()  '3' => '30' => '.30'

答案 1 :(得分:0)

使用tryParse来避免异常。

int val;

if (int.Parse(input, out val)) {
    String.Format("{0,0:N2}", val / 100.0);
}

答案 2 :(得分:0)

这里非常简单,工作得很好.. urValue.Tostring( “F2”)

让我们说.. int / double / decimal urValue = 100; urValue.Tostring( “F2”); 结果将是“100.00”

所以F2是你想要的小数位数 如果你想要4个地方,那么使用F4