【发布时间】:2017-03-17 10:30:39
【问题描述】:
我发现 CultureInfo 类返回的信息如数字格式在 Windows 8.1 和 10 中执行时不同。我创建了一个简单的控制台应用程序以符合下面给出的要求。在 Windows 8.1 中,转换结果为 2235。但在 Windows 10 中,结果为 0。我在这两种环境中都使用了 Visual Studio 2013。
CultureInfo cultureInfo = new CultureInfo(3079);
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;
string value = "2.235";
decimal test;
decimal.TryParse(value, NumberStyles.Any, cultureInfo, out test);
如果您需要任何进一步的信息以提供清晰的图片,请告诉我。
问候 普拉塔普
【问题讨论】:
-
结果不是 0 但
TryParse返回了false,因为它无法解析它。始终将TryParse的结果存储在变量中(或使用if)。 -
或者,当然,如果您总是希望它正常工作(但它没有),则只使用常规 Parse 来获取异常
-
@Malachi:即使您希望它工作并且不解析是例外,最好使用
TryParse。然后你可以决定是抛出一个有意义的异常还是做其他事情。仅当您 100% 确定它有效时才使用Parse。 -
@TimSchmelter 基本上同意,因此“你总是期望它起作用”强调总是......我个人很草率,不会去 100%,但我不会继续记录并说别人不应该:)
标签: c# visual-studio-2013 windows-10 windows-8.1 cultureinfo