为什么Convert.ToInt32("10.0")失败

The*_*ing 2 .net sql-server-2005

不仅在.NET中,即使在SQL Server 2005中这种转换也失败了......

谁能告诉我为什么?

即使在情况下,也不要谨慎地返回整数部分

    Convert.ToInt32("10.2")
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 5

比失去一些意想不到的结果更好 10.010.2不是整数.如果您知道要处理浮点数,请使用相应的数据类型:

float result = Convert.ToSingle("10.2", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

在处理浮点数时也不要忘记考虑文化因为小数分隔符可能并不总是如此..


Jon*_*eet 5

其他人已经解释了为什么将"10.2"解析为10会是一个坏主意.现在让我们考虑"10.0".

"10.0"是一个数字的字符串表示,可以有一个小数部分 - 换句话说,不是一个整数.

如果要将值解析整数,则应该解析整数表示."10.0"几乎可以肯定只是巧合的整...数据源显然不是整数的来源,所以你不应该把他们当作整数.

如果你想要最接近"实数"的整数,你应该将它解析实数,然后根据需要进行舍入.

可以这样想:选择正确的解析形式表达了对输入格式的信念.目前的行为告诉你,你猜得很糟糕.