我已经在.net核心中创建了一个应用程序,该应用程序接受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
,因此对于接受TryParse
的IFormatProvider
使用重载以使用CultureInfo.InvariantCulture
来解析字符串。
也照做
decimal lat = 0;
decimal.TryParse(args[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lat);