Ubuntu 终端上的 .NET Core 参数十进制错误



我在 .net core 中创建了一个应用程序,它接受 2 个十进制值作为参数。 (3.1 核)

例:

./MyApp 5.100 53.30 

测试时,这在我的 Windows 系统上完美运行。但是,当我将其发布到我的 ubuntu 服务器时,它在我的十进制值中看不到点。

当我在 Ubuntu 中为它们提供应用程序后打印值时,将它们视为:5100 5330而不是5.100 53.30.

我不知道我做错了什么。如果有人知道这个问题的答案,将不胜感激!

编辑:

我试图用这个来转换它们:

decimal Lat = 0;
decimal.TryParse(args[1], out Lat)

还尝试使用以下方法进行转换:

decimal Lat = 0;
Lat = Convert.ToDecimal(args[1])

两者都会导致点被删除

这些点仅在解析后被删除。 在解析之前打印它们工作正常。

你的 ubuntu 系统通常有一个没有数字小数点的文化设置。 例如,在英语中会5.10但在德语等语言中会5,10因此,请对接受IFormatProviderTryParse使用重载来使用CultureInfo.InvariantCulture来解析字符串。

所以只要做

decimal lat = 0;
decimal.TryParse(args[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat);

最新更新