【问题标题】:how to change culture info on the string or double如何更改字符串或双精度的文化信息
【发布时间】:2012-05-22 22:13:25
【问题描述】:

我想更改双精度或字符串的 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

编辑

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

【问题讨论】:

  • 嗨,实际上我确信这是正确的解决方案,但让我告诉你问题出在哪里。我得到这个值 3000 或 2729 作为高度。当我转换它时,我得到 80-90 米的值,这是不正确的,因为我在 cca 的高度。 230米。这意味着这不是正确的公式:) 或者我弄错了。我使用公式值= 0.03048 * 高度,它给了我我写的这个值。有什么想法吗?

标签: c# winforms parsing format cultureinfo


【解决方案1】:

这与文化信息无关。

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

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

我希望这会有所帮助。

【讨论】:

  • +1。是的,高度可能是以设备特定的单位给出的。
  • 你所说的一切都是正确的。所以公式是将英尺转换为米并除以 10
  • 嗨,实际上我确信这是正确的解决方案,但让我告诉你问题出在哪里。我得到这个值 3000 或 2729 作为高度。当我转换它时,我得到 80-90 米的值,这是不正确的,因为我在 cca 的高度。 230米。这意味着这不是正确的公式:) 或者我弄错了。我使用了公式value= 0.03048 * altitude,它给了我我写的这个值。有什么想法吗?
  • 我明白了,但是执行3000 * 0.3048 会得到914.4,大致相当于91 meters。你确定你使用了正确的椭球高度吗?
【解决方案2】:

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

double altitudeMeters = 0.3048 * altitudeFeet;

【讨论】:

  • 我确定这是在 3005.0 示例中...我已经编辑了我的问题
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

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

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

    【讨论】:

      【解决方案5】:

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

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

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

      亚历克斯

      【讨论】:

      • 已收到来自 Denonth 的 $GPGGA 字符串样本 "$GPGGA,195647.000,4633.3942,N,01538.7926,E,1,05,2.3,300.1,M,43.3,M,,0000* 5D" 我会说他的 GPS 报告的高度约为 300m
      • 至于他为什么在他的软件中将其视为 ~3000 - 也许这是一种文化效应
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多