我需要将string
解析为decimal
,它可能会在英国或欧洲文化中使用。
如果在欧洲文化2,00
中2
但是,2,00
在英国文化中无效,因为逗号表示一千个。
如果我使用
Double.Parse("20,50", new CultureInfo("en-GB"))
返回2050
我原以为这会抛出一个无效的异常。
有人可以帮忙吗?
答案 0 :(得分:3)
你应该没有得到异常,因为,
是解析字符串中的有效字符(如你所说,它被解释为千位分隔符)。
但是,我看到同一段代码2050
,而不是20.50
。
我希望只有在该区域的控制面板中手动更改了en-GB
文化的结果才会看到您的结果(如果有人将小数点分隔符设置为,
和千位分隔符对于不是,
)的东西。
答案 1 :(得分:0)
从更新后的问题中,我可以看出英国文化明显使用,
字符作为可能的地点分隔字符,例如2,000
代表2000
和2,000,000
2000000
。但它也可以像2,0,0,0
,它仍然是2000
。
从这个角度来看,有三种可能的情况:
答案 2 :(得分:0)
关键是GB culutre中的“2,00”应该是无效的,但它会像使用欧洲文化一样解析它。
我希望它抛出异常。
相比之下 - Double.Parse(“20.50”,new CultureInfo(“fr-FR”))抛出异常,因为小数位无效。
那么为什么Double.Parse(“20,50”,新的CultureInfo(“en-GB”))
这是真的