我需要将一个字符串解析为十进制数(decimal),并且它可能会用于英国或欧洲文化环境。
在欧洲文化环境中,2,00
将表示为 2
。
然而,在英国文化环境中,2,00
将无效,因为逗号代表千位分隔符。
如果使用:
Double.Parse("20,50", new CultureInfo("en-GB"))
它返回2050
我本以为它会抛出一个无效异常。
有人可以帮忙吗?
我需要将一个字符串解析为十进制数(decimal),并且它可能会用于英国或欧洲文化环境。
在欧洲文化环境中,2,00
将表示为 2
。
然而,在英国文化环境中,2,00
将无效,因为逗号代表千位分隔符。
如果使用:
Double.Parse("20,50", new CultureInfo("en-GB"))
它返回2050
我本以为它会抛出一个无效异常。
有人可以帮忙吗?
您不应该收到异常,因为,
是解析字符串中的有效字符(正如您所说,它被解释为千位分隔符)。
然而,我看到相同代码段的结果是2050
,而不是20.50
。
只有在控制面板手动更改了该区域的小数分隔符为,
且千位分隔符不是,
时,我才会期望在en-GB
文化中看到您的结果。
2050
,而不是20.50
。你是否在控制面板中更改了英国区域设置,并将小数分隔符设置为,
? - Oded,
的位置是宽容的 - 这可能是因为它有两个用途。如果一个字符串不应该包含,
,你需要自己进行测试并抛出异常。 - Oded