2017-04-10 43 views
0

那麼,我有一個VB.net代碼,它從一些XML fiels中獲得值,沒有問題,問題是有時值有不同的格式,點之後,所以當我嘗試將該值轉換爲一個數字,我得到一個錯誤的值。從XML獲取十進制值

我的代碼來獲取領域:

qntXml As XmlNodeList = docXml.GetElementsByTagName("qCom") 
qnt = Convert.ToDecimal(quantidadeXml(0).InnerText) 

我用100分的「QNT」領域,以獲得正確的值,但它不工作了,因爲你可以看到下面

<qCom>380.00</qCom> 
<qCom>170.0000</qCom> 

我得到「完整」數字,例如38000,而我應該得到380,00。

如果有人有一個想法如何用C#解決它也沒有問題。

+0

此無關的XML。你正試圖用默認語言環境解析一個十進制數,這顯然使用'.'作爲千位分隔符。不要使用Convert.ToDecimal,而要在InvariantCultureInfo中使用'decimal.Parse',例如'decimal.Parse(someText,CultureInfo.InvariantCulture)' –

回答

0

Convert.ToDecimal使用CurrentCulture Property

所以,你可以轉換成有爲逗號:

qntXml As XmlNodeList = docXml.GetElementsByTagName("qCom") 
var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
clone.NumberFormat.NumberDecimalSeparator = "."; 
qnt = Convert.ToDecimal(quantidadeXml(0).InnerText, clone);