2012-08-29 39 views
2

我將值存儲爲字符串格式&我想將其轉換爲十進制數。將字符串值轉換爲具有正確小數點的十進制數

例如:

我已經存儲在字符串格式11.10當我嘗試轉換成十進制它給我11.1而不是11.10

我嘗試了通過以下方式

string getnumber="11.10"; 
decimal decinum=Convert.ToDecimal(getnumber); 

我想這也

decinum.ToString ("#.##"); 

但它返回的字符串,我想這在小數。

這可能是什麼解決方案?

+3

小數'11.1 = 11.10' :) –

+0

在看這個問題-HTTP://stackoverflow.com/questions/4264736/convert-string-to-decimal-c -sharp – Buzz

+1

'11.1'' 11.10'' 11.100000000000'有什麼區別?無......有人錯過了一些課:) – Reniuz

回答

3

如已經評論11.1是相同的值11.10

decimal one=11.1; 
decimal two=11.10; 
Console.WriteLine(one == two); 

威爾輸出true

#格式化器在到串方法意味着可選的位,並且如果它是零將剿(這是有效的壓制 - 04.05不會被壓制)。嘗試

decinum.ToString("0.00"); 

你會看到的11.10

理想的字符串值,你真的想使用類似

string input="11.10"; 
decimal result; 

if (decimal.TryParse(input,out result)) { 
    Console.WriteLine(result == 11.10); 
} else { 
    // The string wasn't a decimal so do something like throw an error. 
} 

在上面的代碼中結束,結果將是小數你想要和「真」將被輸出到控制檯。

1

A decimal數據類型存儲。 11.1的數值與11.10的數值完全相同 - 它們是完全相同的數字,所以它的行爲是正確的。

你似乎想要的是顯示數字爲11.10,但這取決於顯示它的代碼 - 我不知道你是否正在寫入日誌文件,顯示在網頁上或任何其他格式 - 但與數據類型decimal的內部表示無關。

1

沒有解決方案,這是預期的行爲。 11.10字符串= 11.1數量

您在小數部分斜面店零,否則11.10將比11.100,如果你談論的是字符串但如果你正在談論的數字哪個是真的有所不同。

我認爲你的問題僅限於演示級別。你爲什麼不更好地解釋你想做什麼。

1

11.10以十進制表示爲11.1,就像它是11.100000000000000000000000000000000000一樣。

對於數學過程,不要擔心它如何顯示自身。如果你顯示的值,然後將其轉換成一個字符串也沒有biggie。請記住,

decinum.ToString ("#.##"); 

被(從「的ToString」功能)返回一個字符串和「decinum」不轉換爲字符串。

0
string getnumber = "11.10"; 
    double decinum = double.Parse(getnumber); 
2

這將很好地工作

string getnumber = "11.10"; 
decimal decinum = Math.Round(Convert.ToDecimal(getnumber), 2); 
相關問題