2012-05-22 26 views
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

編輯

正如你可以在此看到LINK我以前也有類似的問題,這是與文化信息解決。問題在於,在圖片1上,我得到的值和圖片2上的值是我需要得到的真實值(當我說我的意思是正確的格式時)我認爲這個問題在文化中某處以前的問題我有小數值問題)。

+0

嗨,其實我相信,這是正確的解決方案,但讓我告訴你是什麼問題。我將這個3000或2729的值作爲高度。當我轉換它時,我得到80-90米的價值,這是不正確的,因爲我在cca的海拔高度。 230米。這意味着這不是正確的公式:)或者我錯了。我使用公式值= 0.03048 *高度,它給了我寫這個值。任何想法? –

回答

4

這與文化信息無關。

看起來你正在用腳測量,而你期望它的單位是米。事實上,100 meters = 328.08399 feet和你的測量可能在10英尺我。(有些GPS接收器不支持浮動或雙打,因此只返回乘以10的整數以得到一位小數精度)

如果您使用的是廉價的GPS接收器,則由於準確度不是很好這將解釋爲什麼你得到3015.0而不是3280)

我希望這可以幫助。

+0

+1。是的,可能高度是以設備特定的單位給出的。 –

+0

你所說的一切都是正確的。所以公式就是把腳轉換成米,然後用10 –

+0

嗨分隔,其實我確信這是正確的解決方案,但讓我告訴你問題是什麼。我將這個3000或2729的值作爲高度。當我轉換它時,我得到80-90米的價值,這是不正確的,因爲我在cca的海拔高度。 230米。這意味着這不是正確的公式:)或者我錯了。我使用公式'價值= 0.03048 *高度',它給了我我寫的這個值。任何想法? –

1

當前文化的設置不會爲您轉換單位。它隻影響數字的格式(例如,一些文化使用逗號而不是小數點的句號)。你必須自己做單位轉換。

1

double.Parse將簡單地將字符串轉換爲數字。它不會進行單位轉換。不同的文化信息用於存在小數點逗號(例如法語)等。

您必須在應用程序中構建一些邏輯以將數字從英尺轉換爲米。如果你能確定數據總是處於「錯誤」的格式,那麼簡單的腳到米(1英尺= 0.3048米)的轉換就可以工作。鑑於這是一款GPS設備,您可以假設這一點。

如果數字可以是任何格式,那麼您將需要分析數字,如果它在合理範圍之外轉換它。但是,如果有人輸入「100」,這將失敗。這是米還是英尺?

爲確保您獲得正確的單位,您必須讓用戶在單獨的控件上選擇單位或在輸入字符串中包含單位。如果你使用後者,那麼你需要分析字符串,看看它是否包含單位字符串,剝離它,解析數字和字符串,然後進行轉換。

+0

我編輯了我的問題 –

2

你的問題與CultureInfo無關,但與單位轉換。可能你將不得不做一個單位轉換。你確定這個號碼不是301.5嗎?這可能意味着該學生是用腳來給出的。

double altitudeMeters = 0.3048 * altitudeFeet; 
+0

我確定這是在3005.0示例中...我編輯了我的問題 –

0

高度來自$ GPGGA字符串,表示正在使用的單位。 $ GPGGA字符串是什麼樣的?

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

,如果你看一下字符串中的原始數據,你就會知道,如果你正在收集正確的數字及其單位

亞歷

+0

已收到來自Denonth「$ GPGGA,195647.000,4633.3942,N,01538.7926,E,1,05,2.3,300.1,M,43.3,M ,, 0000 * 5D的$ GPGGA字符串的樣本」我會說他的GPS報告的高度爲〜300米 – Alex

+0

至於他爲什麼在他的軟件中看到〜3000這可能是一種文化效應 – Alex

相關問題