多元文化编程的有趣部分之一是数字格式。
- 美国人使用 10,000.50
- 德国人使用 10.000,50
- 法国使用 10 000,50
我的第一种方法是获取字符串,将其向后解析,直到遇到分隔符并将其用作小数分隔符。这样做有一个明显的缺陷:10.000 会被解释为 10。
另一种方法:如果字符串包含 2 个不同的非数字字符,则使用最后一个作为小数分隔符并丢弃其他字符。如果我只有一个,请检查它是否多次出现,如果出现则丢弃它。如果它只出现一次,请检查它后面是否有 3 位数字。如果是,则丢弃它,否则,将其用作小数分隔符。
显而易见的“最佳解决方案”是检测用户的文化或浏览器,但如果您有一个使用 en-US Windows/浏览器的法国人,这将不起作用。
Double.(Try)Parse()
.net 框架是否包含一些比尝试自动检测数字格式更好的神秘黑魔法浮点解析器?