1

我想更改双精度或字符串的 CultureInfo。

例如,我从 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 上是我需要得到的真实值(当我说真实时,我的意思是正确的格式)以前的问题我有十进制值的问题)。

4

5 回答 5

4

这与文化信息无关。

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

如果您使用的是比预期便宜的 GPS 接收器,因为精度不是那么好(这可以解释为什么您得到 3015.0 而不是 3280)

我希望这有帮助。

于 2012-05-22T22:30:54.513 回答
2

您的问题与 CultureInfo 无关,而是与单位转换有关。可能您将不得不进行单位转换。你确定号码不是301.5吗?这可能意味着高度以英尺为单位。

double altitudeMeters = 0.3048 * altitudeFeet;
于 2012-05-22T22:22:40.920 回答
1

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

于 2012-05-22T22:17:53.697 回答
1

double.Parse将简单地将字符串转换为数字。它不进行单位转换。不同的文化信息适用于有小数逗号(例如法语)等时。

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

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

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

于 2012-05-22T22:18:13.247 回答
0

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

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

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

亚历克斯

于 2012-05-24T07:57:22.367 回答