如何更改字符串或双精度的区域性信息

本文关键字:区域性 信息 双精度 何更改 字符串 | 更新日期: 2023-09-27 18:34:56

我想更改双精度或字符串的文化信息。

例如,我从代码中获取双精度值,格式为 3015.0

我不知道这是什么单位,但我需要米的值,而这些值不在米中,因为我在 cca.100m 的高度

我试过:double.Parse(test, new System.Globalization.CultureInfo("hr-HR"));

double.Parse(test, new System.Globalization.CultureInfo());

但没有什么是我需要的正确格式。

知道我能做什么吗?如果这很重要,这是 Windows 窗体 C# 应用程序。框架 4.0

编辑

正如您在此链接上看到的那样,我之前遇到过类似的问题,并且已通过文化信息解决。问题是图片 1 上是我得到的值,图片 2 上是我需要获得的真实值(当我说真实时,我的意思是格式正确(我认为问题出在文化中的某个地方,就像我之前的问题一样,我对十进制值有问题(。

如何更改字符串或双精度的区域性信息

这与区域性信息无关。

看起来您正在以英尺为单位进行

测量,而您期望它以米为单位。事实上,100 meters = 328.08399 feet和您的测量值可能为 10 英尺,即3015.0 = 301.5 feet(某些 GPS 接收器不支持浮点数或双精度,因此仅返回整数乘以 10 以获得一个小数精度(

如果您使用的是便宜的GPS接收器,则由于精度不是那么高,因此这是预期的(这可以解释为什么您获得3015.0而不是3280(

我希望这有所帮助。

您的问题与文化信息无关,而与单位转换有关。可能您将不得不进行单位转换。你确定这个数字不是 301.5 吗?这可能意味着海拔高度是以英尺为单位的。

double altitudeMeters = 0.3048 * altitudeFeet;

当前区域性的设置不会为您转换单位。 它仅影响数字的格式(例如,某些区域性使用逗号而不是句点作为小数点(。 您必须自己进行单位转换。

double.Parse将简单地将字符串转换为数字。它不进行单位转换。不同的区域性信息适用于存在十进制逗号(例如法语(等的情况。

您必须在应用程序中构建一些逻辑,以将数字从看起来像英尺的数字转换为米。如果您可以确定数据始终采用"错误"格式,那么简单的英尺到米(1 英尺 = 0.3048 米(转换将起作用。鉴于这是一个GPS设备,您也许可以假设这一点。

如果

数字可以是任何格式,那么您将需要分析数字,如果它超出合理范围,则将其转换。但是,如果有人输入"100",这将失败。这是米还是英尺?

为了确保获得正确的单位,您必须让用户在单独的控件中选择单位,或者在输入字符串中包含单位。如果你做后者,那么你需要解析字符串以查看它是否包含一个单位字符串,剥离它,解析数字和字符串,然后进行转换。

高度来自$GPGGA表示正在使用单位的字符串。$GPGGA字符串是什么样子的?

见 http://aprs.gids.nl/nmea/#gga

如果您查看字符串中的原始数据,您将知道是否收集了正确的数字及其单位

亚历克斯