1

doubleまたはstringのCultureInfoを変更したい。

たとえば、コードから double 値を 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 に取得する必要がある実際の値があることです (実際と言うときは、正しい形式を意味します) 問題は私の文化のどこかにあると思います以前の質問では、10 進数の値に問題がありました)。

4

5 に答える 5

4

これは文化情報とは関係ありません。

メートル単位であると予想しているのに、フィート単位で測定しているようです。実際、100 meters = 328.08399 feet測定値は10フィートである可能性があります3015.0 = 301.5 feet(一部のGPS受信機はフロートまたはダブルをサポートしていないため、10を掛けた整数のみを返し、小数点以下1桁の精度になります)

精度がそれほど高くないため、これよりも安価なGPS受信機を使用している場合(これは、3280ではなく3015.0を取得している理由を説明します)

これがお役に立てば幸いです。

于 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 に答える