在C#中转换字符串

时间:2015-11-04 18:37:58

标签: c#-4.0

我想将我的字符串值转换为int16并且只显示2个小数位。我已经尝试了下面的内容,但是由于我的字符串值实际上没有被转换,所以它会抛出一个错误吗?

namespace ConsoleApplication2
{
  class Program
  {
    static void Main(string[] args)
    {
        string number1 = "1234.00011";
        Console.Write(number1);
        Console.WriteLine();
        string r = String.Format("{0:F2}", number1);
        Console.Write(Convert.ToInt16(r));
    }
  }
}

EDIT

抛出错误的行是

Console.Write(Convert.ToInt16(r));

错误是

  

未处理的类型' System.FormatException'发生在mscorlib.dll

     

其他信息:输入字符串的格式不正确。

1 个答案:

答案 0 :(得分:0)

您对string.Format的调用是使用浮点格式说明符并提供字符串参数。这些是互不相容的。因此,字符串参数按原样插入到结果中,并存储在r中,这样您就无法获得所需的两位数舍入。

您可能想要做的是这样的事情:

    static void Main(string[] args)
    {
        string number1 = "1234.00011";
        Console.Write(number1);
        Console.WriteLine();
        var r1 = float.Parse(number1);
        string r = String.Format("{0:F2}", r1);
        Console.WriteLine(r);
        Console.Write((int)r1);
        Console.ReadKey();
    }

在我的测试中,它产生以下输出:

1234.00011
1234.00
1234

请注意,第二行具有所需的舍入,因为我们为string.Format提供了浮点值,因此{0:F2}可以正常工作。第三行没有小数位,因为我们使用了直接强制转换,并且不包含任何浮点数。