2015-05-17 17 views
0

我已經通過一個參數接收一個簡單的字符串:區域設置/文化問題轉換字符串爲十進制

「1.00」

基於訪問者的語言環境有時轉換爲:

「1」或「1,00」

第二個是問題,我總是需要它是一個時期(點)。 $,£

我使用:

decimal price = Convert.ToDecimal(stringPrice, new CultureInfo("en-GB")); 

爲什麼還是轉換爲 「1.00」 小數,如果我使用EN-GB文化?我嘗試了InvariantCulture,發生了同樣的事情。這是爲什麼發生?它不應該因爲它在後端,對嗎?

+2

'Convert.ToDecimal(「1.00」,new CultureInfo(「en-GB」))== 1'返回true。你能否澄清一下「它仍然轉換成」100「小數」? –

+0

你是說字符串總是被接收爲1.00,然後有時被轉換爲1,00或1?或者你是否說發送的字符串有時是1.00,有時是1.00? I.e是轉換結果不同還是原始字符串不同? – DWright

+0

除了@AlexeiLevenkov指出'Convert.ToDecimal(「1.00」,new CultureInfo(「en-GB」))== 1.00'還將返回true,'decimal'是一個浮點值。在Convert.ToDecimal轉換後,它不再是一個字符串,並且無論小數點後面顯示的零是多少。直到你將它轉換回字符串,使用給定的字符串格式,它會有什麼關係。 – Alex

回答

2

轉換進行得很好 - 在內部,您會在變量(價格)中獲得1.00的十進制表示形式。無論你看到「1,00」還是別的什麼都取決於你在哪裏輸出這個變量。請看你如何打印它,看看它應該如何顯示。

相關問題