我在 .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
因此,请对接受IFormatProvider
的TryParse
使用重载来使用CultureInfo.InvariantCulture
来解析字符串。
所以只要做
decimal lat = 0;
decimal.TryParse(args[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat);