首页 > 解决方案 > C# .Net Core - 无论文化如何设置全局小数分隔符

问题描述

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

我正在使用 .Net Core Web Api

标签: c#.net-core

解决方案


您可以将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();

推荐阅读