int.Parse()上的错误

时间:2012-02-01 09:28:44

标签: c# .net

我有以下代码:

 int a = 50;
 float b = 50.60f;

 a = int.Parse(b.ToString());

在运行时,此解析给出错误。为什么要引导我。

由于

5 个答案:

答案 0 :(得分:4)

它试图解析字符串“50.6” - 无法解析为整数,因为50.6 不是整数。来自the documentation

  

s参数包含以下形式的数字:

[ws][sign]digits[ws]

也许你想把它解析为一个浮点数然后强制转换到一个整数?

a = (int) float.Parse(b.ToString());

答案 1 :(得分:2)

您正在尝试将不表示整数的字符串解析为整数。

这就是你得到例外的原因。

答案 2 :(得分:2)

答案 3 :(得分:2)

它会出错,因为您尝试将int解析为表示浮点数的字符串。

float b = 50.60f; // b = 50.6
                  // b.ToString() = "50.6" or "50,6" depending on locale
                  // int.Parse("50.6") MUST give an error because "50.6" is
                  // not a string representation of an integer

你想做什么?将float转换为int?就这样做:

float b = 50.6f;
int a = (int)b;

这会将b的值截断为 50

或者您希望它四舍五入到最接近的整数?

int a = (int)Math.Round(b);

答案 4 :(得分:1)

错误消息不够具体吗?

  

输入字符串的格式不正确。

int.Parse必须带一个可以解析为整数的字符串。字符串“50.6”不符合该要求!