我有以下代码:
int a = 50;
float b = 50.60f;
a = int.Parse(b.ToString());
在运行时,此解析给出错误。为什么要引导我。
由于
答案 0 :(得分:4)
它试图解析字符串“50.6” - 无法解析为整数,因为50.6 不是整数。来自the documentation:
s参数包含以下形式的数字:
[ws][sign]digits[ws]
也许你想把它解析为一个浮点数然后强制转换到一个整数?
a = (int) float.Parse(b.ToString());
答案 1 :(得分:2)
您正在尝试将不表示整数的字符串解析为整数。
这就是你得到例外的原因。
答案 2 :(得分:2)
这是因为int.Parse throws NumberFormatException if the string does not contain a parsable integer; 50.6
不是可写整数。
答案 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”不符合该要求!