【发布时间】:2019-10-16 09:17:34
【问题描述】:
我正在使用双打。在荷兰,我们使用 51,3 而不是 51.3。我确实写了一段使用点而不是逗号的代码。但是之前编写的代码的结果返回了一个双倍的英文方式,带有一个点。我遇到了一些奇怪的错误。
这是我所拥有的:
var calResult = 15.2d;
var calResultString = calResult.ToString(CultureInfo.GetCultureInfo("nl-NL"));
var result = double.Parse(calResultString);
- calResult == "15.2" -> 符合预期
- calResultString == "15,2" -> 符合预期
- result == "152" -> 这里我需要一个逗号。
A 也确实尝试在 double.Parse 中添加文化信息。这导致了“15.2”。
TLDR:我需要将英/美双精度转换为荷兰语(或类似规则)。
提前致谢! :)
附言
我希望这不是一个重复的问题,但没有找到任何具体的问题。
【问题讨论】:
-
我不明白这个问题。
double没有文化概念,没有所谓的“英美双标”。当您将double转换为字符串时,然后文化变得很重要,因为这决定了例如小数位使用什么字符。如果您在调试器中查看您的double,请记住调试器正在使用某种文化为您将其转换为字符串。 -
var result = source.Parse(CultureInfo.GetCultureInfo("en-US")).ToString(CultureInfo.GetCultureInfo("nl-NL"));有一个string,它是en-US中的一个浮点数,我们将它转换为一个string,它代表相同的浮点数,但在nl-NL中 -
如果你这样做
var result = double.Parse(calResultString, CultureInfo.GetCultureInfo("nl-NL"));会发生什么? -
@Matthew "A 也确实尝试在 double.Parse 中添加cultureinfo。这导致了“15.2”。"
-
@Jeroen 如果您正在解析使用例如',' 作为小数点分隔符,
double.Parse需要知道这一点,才能正确解释。
标签: c# parsing double comma cultureinfo