【问题标题】:C# .Net Core - Set global decimal delimiter regardless of cultureC# .Net Core - 无论文化如何设置全局小数分隔符
【发布时间】:2020-07-20 03:51:51
【问题描述】:

所以我有一台开发机器,它是荷兰机器和英文服务器。 现在,我在数据库中有像 1.99(字符串)这样的值,我需要将其转换为小数。 当我做decimal.Parse("1.99") 时,我得到 199.00。这是(可能)因为我的机器使用荷兰语设置并且小数点的分隔符是,(逗号)。 现在,无论请求的文化或机器本地设置如何,我如何将其全局设置为始终使用 .(dot) 作为分隔符?

我正在使用 .Net Core Web Api

【问题讨论】:

标签: c# .net-core


【解决方案1】:

您可以使用CultureInfo.InvariantCulture,它使用. 作为小数分隔符

var number = decimal.Parse("1.99", CultureInfo.InvariantCulture);

如果你不想在每次解析调用中设置文化,你可以创建一个扩展方法

public static class StringExtensions
{
    public static decimal ToDecimalInvariant(this string value)
    {
        return decimal.Parse(value, CultureInfo.InvariantCulture);
    }
}

然后像这样使用它

var number = myString.ToDecimalInvariant();

【讨论】:

  • 我知道,但我想在全局范围内添加它,而不是在解析小数的任何地方。
  • 你可以创建一个扩展方法ParseInvariant(string)
  • 也许那是最好的解决方案。我无法通过改变文化设置来让它发挥作用。谢谢
  • 你也可以全局设置cutlutre。见stackoverflow.com/questions/40442444/…
猜你喜欢
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 2011-04-21
  • 2013-02-19
  • 2013-04-29
相关资源
最近更新 更多