Convert.ToInt32
在传递 string
与 float/double
文字时表现不同
var result = Convert.ToInt32(12.4);//returns 12
result = Convert.ToInt32(12.44);//returns 12
result = Convert.ToInt32(12.4444444);//returns 12
result = Convert.ToInt32("12.4"); // Input string was not in a correct format.
我知道为 string 和 float/double 调用了不同的
Convert.ToInt32
重载问题是为什么这种不一致的行为不应该为
single
的 Convert.ToInt32
重载抛出精度损失异常? 最佳答案
您可以将当前用于将 double
转换为 int
的实用方法视为“强制转换”,即 (int)12.4
、 (int)12.44
等。这实质上意味着您肯定知道您很可能会丢失数据精度,因此简而言之,就像告诉编译器“继续转换它,因为我不介意数据丢失”,因此,不会抛出异常,而从 string
转换为 int
的最后一个示例应该抛出异常,因为根据 MSDN:
众所周知,如果指定的字符串格式不正确,Int32.Parse(String)
会抛出异常。
关于c# - Convert.ToInt32 行为字符串与浮点/ double 文字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46140482/