C# 使用逗号作为十进制分隔符

C# 使用逗号作为十进制分隔符,c#,double,C#,Double,用户从客户端插入一个双精度数字,唯一的规则是,如果它有“点”,则必须转换为逗号。问题是,当我通过AJAX将带有逗号分隔符的数字传递给控制器时,控制器中的参数double无法读取该值,并且崩溃。这就是我必须将参数字符串放入控制器以便它可以读取值的原因 var pesoArticolo = $("#editPesoArticoloTextBox").val(); pesoArticolo = pesoArticolo.replace(".", ","); 控制器中的问题是,我找不到任何将分隔符转换

用户从客户端插入一个双精度数字,唯一的规则是,如果它有“点”,则必须转换为逗号。问题是,当我通过AJAX将带有逗号分隔符的数字传递给控制器时,控制器中的参数double无法读取该值,并且崩溃。这就是我必须将参数字符串放入控制器以便它可以读取值的原因

var pesoArticolo = $("#editPesoArticoloTextBox").val();
pesoArticolo = pesoArticolo.replace(".", ",");
控制器中的问题是,我找不到任何将分隔符转换为“逗号”的方法。CultureInfo.InvariantCulture还有一个问题,即如果数字为0067,则会删除所有前导零并变为67


有什么解决办法吗?我需要使用逗号作为分隔符,因为它必须保存到数据库(浮点字段)中,该数据库也由另一个使用逗号作为分隔符的软件读取

您需要使用使用逗号作为小数分隔符的区域性(例如,德国的“DE DE”)


我尝试了这个文化信息,但它仍然不起作用,并插入了点而不是逗号:我添加了一个指向.NET fiddle的链接来演示一些用法。您是如何在代码中尝试它的?我添加了与您相同的代码,只是添加了输出writeline,因为我在Visual Studio中通过调试看到了该值,并且该值保留为点而不是逗号。“var culture=new CultureInfo(“DE”);var pesoArticoloDouble=double.Parse(“1,23”,culture);”Visual Studio将在计算机的区域性中显示它。现在,您已经成功地将字符串“1,23”解析为有效的double,您可以随心所欲地使用它。虽然它在代码中是双精度的,但您可以将其用作数字。当您解析它并向用户显示它时,实际上只需要使用区域性来处理它。你下一步想实现什么?重要的是,当我要保存数字时,它会用逗号将数字保存到数据库中
[HttpGet]
public JsonResult ProcessEditPesoArticolo(int idArticolo, string pesoArticolo)
{           
  var pesoArticoloDouble = double.Parse(pesoArticolo, CultureInfo.InvariantCulture);
}
[HttpGet]
public JsonResult ProcessEditPesoArticolo(int idArticolo, string pesoArticolo)
{           
  // replace DE-de with your own culture
  var pesoArticoloDouble = double.Parse(pesoArticolo, new CultureInfo("DE-de"));
}