Convert.ToInt32 在传递 stringfloat/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.

我知道为 stringfloat/double 调用了不同的 Convert.ToInt32 重载

问题是为什么这种不一致的行为不应该为 singleConvert.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/

10-12 22:34