|   |      1 
                                  14
                             从 the MSDN documentation of System.Double.Parse : 
 
   这里,逗号(
    
   总结一下:如果当前区域性的千位分隔符符号出现在字符串中的任何位置,它将被忽略
    Int32.Parse(string) 另一方面,字符串中不允许有数千个分隔符: 
   这就是您的第一个示例抛出异常的原因。你可以改变这两种行为
    | 
|   |      2 
                                  8
                             
   第一次失败是因为
    现在它的工作原理就像双版本 做 默认情况下支持数千个分隔符。它们之所以成功,可能是因为“当解析器将其视为千位分隔符时,将完全忽略”,即使逗号有时不具有千位分隔符的意义。 令人惊讶的是,即使这样也行: 在上面,d被设置为值1123.0。 | 
|   |      3 
                                  6
                             在这种情况下,逗号将被解释为本地化的组分隔符符号,并被忽略。见 http://msdn.microsoft.com/en-us/library/fd84bdyt.aspx . 
   在这种情况下,您使用
    这背后的原因是整数转换器没有本地化支持 默认情况下 因为本地化增加了额外的开销,并且没有理由为根本不需要与任何符号交互的解析器添加它。但是,您可以使用一些额外的参数强制解析器支持本地化: 
   另一方面,浮动/双重转换,
   
    有
   
   以支持十进制分隔符。在某些文化中,这是
    | 
|   |      4 
                                  1
                             在转换为double时忽略逗号。如果希望逗号生成错误,则可以使用double.parse(string,system.globalization.numberstyles)方法。 | 
|   |      5 
                                  0
                             因为double假定逗号是一个数千分隔符,而忽略了它。Int32转换不能做到这一点。 | 
|   |      6 
                                  0
                             同样的事情 转换.todouble :  | 
|   | A B · C#Excel自动调整列避免长文本时出错 8 月前 | 
|   | Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 8 月前 | 
|   | Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 8 月前 | 
|  | Sei · Avalonia/WPF将路由器传递到控制模板 9 月前 |