2013-12-03 51 views
-3

我需要將文本字符串格式化爲雙變量。我已經嘗試使用:將文本字符串格式化爲雙變量

double dbValue; 
string strValue = "YES"; 

dbValue = Convert.ToDouble("strValue"); 

不給我任何錯誤,直到我運行該程序,我得到一個「輸入字符串的不正確的格式」的錯誤消息。我知道它可以轉換模擬數字的字符串表示(即「23.4」,「345.50」),但我怎樣才能將實際字母「YES」變成雙變量?我該如何做到這一點?

任何幫助將不勝感激。

謝謝。

+7

你認爲價值是什麼? 「是」根本不是「雙重」價值。目前尚不清楚「模擬數字」是什麼意思,說實話... –

+1

另外,這與C有什麼關係? –

+0

並得出結論:你爲什麼要這麼做? 如果你至少想要一個存儲int值的數組來表示字符串的每個字符。 –

回答

0
Convert.ToDouble(strValue) 

刪除引號。

在你的例子中,你試圖從字符串「strValue」中獲得一個double值,這將不起作用。

另外,您如何期望將字符串「YES」轉換爲double?嘗試像「3.14」。

+1

當strValue ==「YES」時,這真的沒有什麼幫助。 –

1

首先,你是路過strValue作爲字符串文字,它需要是這樣的:

dbValue = Convert.ToDouble(strValue); 

現在我們已經確定的是,.NET有不知道如何YES轉換成的方式雙。也許你想要的東西,如:

dbValue = strValue == "YES" ? 1M : 0M; 

但隨後一個bool聽起來像在這個節骨眼上一個更好的選擇:

bool result = strValue == "YES"; 

編輯

鑑於您的編輯到原來的帖子裏你說明你明白你可以將「3.14」轉換成雙精度,你甚至問什麼是「是」?現在 - 如果您有某種客戶轉換器,我可以想象得到想象它知道,例如,如何將"PI"轉換爲3.14。但YES沒有語義意義,除非你在看1或0。即使情況如此,當你有這樣做時,你可能會衝擊空氣早餐俱樂部的風格,然後實現爲黎明的冷光將疲憊的光芒灑在您過度熨燙的牀單上,這隻適用於英語,並且您的法國用戶輸入「OUI」以獲得相同的結果,會得到一個錯誤...

它確實是一個有些令人費解和令人困惑的問題。

最後,我相信你可能會患上XY Problem

+0

我在一個只接受雙精度值的函數中使用數字和模擬值的數組。因此,當模擬值(34.5,37,775.6)工作正常時,我無法將數字值(「YES」,「ON」,「SET」)轉換爲雙倍變量以傳遞到此函數中。 – ttunstall

+0

@ user2871763那麼你需要檢查它們並生成一個適合你*想要的*的double。如果你知道YES,ON和SET是什麼樣子,那麼先檢查它。 –

0

我不確定,但您可能正在尋找的是獲取每個字符的ASCII或Unicode值,然後將它們放入數組或雙/整數值列表中。 Unicode(UTF-8)值將始終適合於比雙倍效率更高的INT32。 (有關UTF標準的更多信息,請參見「http://en.wikipedia.org/wiki/UTF-8」)。

基本上,那麼最簡單的C#代碼轉換爲「數字」(字節)的名單將是:

 // store the value 
     string strValue = ""; 

     // alloc enough space for each character to take 4 bytes 
     //  (won't work for large strings but for this it is probably all right) 
     var resultBytes = new byte[strValue.Length*2]; 
     bool complete; int charsUsed = 0; int bytesUsed = 0; 
     System.Text.UTF8Encoding.UTF8.GetEncoder().Convert(strValue.ToCharArray(), strValue.Length, 
      strValue.Length, resultBytes, 0, resultBytes.Length, true, out charsUsed, out bytesUsed, out complete); 


     // use the byte array as a list of numeric values. Indexes 0 - bytesUsed will be filled 

如果我正確地解釋原來的問題,這應該完成預期的目標!

+0

這會給他一個毫無意義的結果。 –

+0

@ Moo-Juice可能會。假設這是通過某種方式進行數字轉換,或者是通過網絡流以特定格式發送,它可能仍然有用。鑑於問題的模糊性,我認爲這既不是正確的也不是錯誤的答案。可能? –