2014-06-06 16 views
0

在我的網站上,我需要從XML讀取數據,其中一些數據是十進制值。 有時值來正確:172,59有時值來像1.000072,590000,如何將其轉換爲正確的格式的最佳方式:如何處理字符串中的正確的零到十進制轉換?

PS:我需要一個字符串值。

謝謝!

+0

@phoog我試過串.Format( 「{0:F}」, 「1.00000」);它不工作。輸出相同的字符串 – gog

+3

這是因爲你正在傳遞一個字符串到函數中。數字格式僅適用於數字數據類型。先將該值轉換爲小數點後再進行格式化。 – phoog

回答

2

你想讓他們去哪種格式,具體是?多少小數等?

如果你想永遠2位小數,儘量標準的數字格式,如:

decimal value = 123.456; 
Console.WriteLine("Your account balance is {0:F}.", value); 

看到其他常見的數字格式化技術this MSDN的例子。

+0

我試過string.Format(「{0:F}」,「1.0000」)),但是它會產生一個錯誤信息,說這個參數不是IFormatable – gog

+0

奇怪,你應該可以使用'string myval = string.Format 「{0:F}」,「1.0000」);'得到一個不錯的2個十進制答案。這個電話你用的是什麼? – GEEF

+0

您可能還想嘗試以下方法: '十進制值= 123.456m; string myVal = value.ToString(「F」);' – GEEF

0

如果我正確地讀你的答案,你想轉換成整數你從一個XML文件轉換爲字符串值拉沒有尾隨零(「PS:我需要一個字符串值」)

驗證碼:

decimal test = 20.000000m 
test.ToString("G29"); 

可以做你想做的

1

你寫你的努力

string.Format("{0:F}","1.00000"); 

這樣做的問題是,您將string傳遞給該函數。數字格式僅適用於數字數據類型。先將該值轉換爲小數點後再進行格式化。

試試這個

public string ReformatDecimalString(string input) 
{ 
    const string formatString = //something 
    var decimalValue = decimal.Parse(input); 
    return decimalValue.ToString(formatString); 
} 

當你格式化一個數值,它是稍微更有效地使用x.ToString(formatString)string.Format(formatString, x)。但請注意,在這兩種情況下,特定的格式字符串會有所不同。

如果輸入的數據有小數點(不是逗號)和計算機的使用文化小數逗號,你應該能夠通過使用CultureInfo.InvariantCulture正確解析值:

var decimalValue = decimal.Parse(input, CultureInfo.InvariantCulture); 
+0

這會起作用,但爲了完整起見,如果您充實一下您的註釋以糾正OP對string.Format字符串與數字的混淆,可能會更好。 – adv12

+0

(在這個答案中,我的意思是) – adv12

+0

@ adv12好點;我會去做。 – phoog

相關問題