用双引号将双引号解析为逗号

问题描述 投票:0回答:2

我正在与双打比赛。在荷兰,我们使用51.3代替51.3。我确实写了一段使用点而不是逗号的代码。但是,先前编写的代码的结果以英文形式返回带点的double形式。我遇到一些奇怪的错误。

这是我所拥有的:

var calResult = 15.2d;
var calResultString = calResult.ToString(CultureInfo.GetCultureInfo("nl-NL"));
var result = double.Parse(calResultString);
  1. calResult ==“ 15.2”->符合预期]
  2. calResultString ==“ 15,2”->如所预期
  3. 结果==“ 152”->在这里我希望有一个逗号。

A也曾尝试在double.Parse中添加cultureinfo。结果为“ 15.2”。

TLDR:我需要将英语/美国双精度转换为荷兰(或类似规则)的双精度。

谢谢! :)

P.S

我希望这不是一个重复的问题,但是没有发现任何具体问题。

c# parsing double comma cultureinfo
2个回答
3
投票

[您可能每当与荷兰文化一起工作时都应该提供"nl-NL"

  var calResult = 15.2d;
  var calResultString = calResult.ToString(CultureInfo.GetCultureInfo("nl-NL"));
  // We should parse with "nl-NL", not with CurrentCulture which seems to be en-US
  var result = double.Parse(calResultString, CultureInfo.GetCultureInfo("nl-NL")); 

或指定CurrentCulture(默认区域性)

  CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("nl-NL");

  var calResult = 15.2d;
  // now CultureInfo.GetCultureInfo("nl-NL") is redundant 
  var calResultString = calResult.ToString(); 
  var result = double.Parse(calResultString); 

最后,如果您有一个string代表en-US文化中的某些浮点值,但您希望保存值但要成为string格式的nl-NL:] >

  string source = "123.456";

  string result = double
    .Parse(source, CultureInfo.GetCultureInfo("en-US"))
    .ToString(CultureInfo.GetCultureInfo("nl-NL")); 

0
投票

数字和字符串不包含任何区域性信息,而是在数字和字符串之间进行转换时指定区域性。


0
投票

我已经编写了一种简单的方法,该方法将检查输入中的昏迷字符并将其替换为点。我认为最好的方法是将输入作为string值。这样,您可以对其进行操作,然后可以对其进行解析,并根据需要返回双精度或字符串:

© www.soinside.com 2019 - 2024. All rights reserved.