.net 核心应用程序在 linux docker 容器中解析小数

.net core app parsing decimals in a linux docker container

以下代码,在 .net core 2.0.0 应用程序中,当应用程序在 windows 开发机器上 运行 时工作正常。 当应用程序部署在 linux docker 容器中时,它失败并显示异常消息:System.FormatException: 'Input string was not in a correct format.'

为什么?解决方法是什么?

class Program {
    static void Main(string[] args) {
        var value = "1.00";
        var valueAsDecimal = decimal.Parse(value, System.Globalization.NumberStyles.Any);
        Console.WriteLine(valueAsDecimal);
        Console.ReadLine();
    }
}

货币符号是特定于区域设置的。您检查过文化设置是什么了吗?

如果您总是想使用“$”和“.”然后使用格式提供者。

 var valueAsDecimal = decimal.Parse(
     value, 
     NumberStyles.Any, 
     new CultureInfo("en-AU");

这是有效的代码。我不得不手动设置正确的文化。 感谢 Richard Schneider 和 Evk 提出的意见。

class Program {
    static readonly CultureInfo USEnglish = new CultureInfo("en-US");
    static void Main(string[] args) {
        var value = "1.00";
        var valueAsDecimal = decimal.Parse(value, System.Globalization.NumberStyles.Any, USEnglish);
        Console.WriteLine(valueAsDecimal);
        Console.ReadLine();
    }
}

docker 容器 FROM microsoft/dotnet:2.0-runtime AS base 上的默认文化 运行 似乎是不变文化: