2010-05-17 141 views
1

我有這行代碼:奇怪解析雙行爲

return (this.pretWithoutDiscount/Double.Parse(UtilsStatic.getEuroValue())).ToString("N2") + "€"; 

在調試模式下我測試,值是:

UtilsStatic.getEuroValue()= 「4.1878」

this.pretWithoutDiscount = 111.0

誰能explaing WHY:

Double.Parse(UtilsStatic.getEuroValue())= 41878.0

當它應該是4.1878?

謝謝...

PS:UtilsStatic.getEuroValue返回一個字符串。

+0

如果使用InvariantCulture會發生什麼? – 2010-05-17 20:17:35

回答

5

你使用的是什麼十進制分隔符,我的猜測是','。嘗試

Double.Parse(UtilsStatic.getEuroValue(), 
      System.Globalization.CultureInfo.InvariantCulture) 

它將使用'。'來解析數字。作爲小數點分隔符。

+0

這就是我的想法:) – 2010-05-17 20:19:55

+0

非常感謝你們兩個人......它現在與IC合作......奇怪的是,這段代碼工作得很好,雖然我開發了新的模塊,但我不知道它是如何實現的已被破壞...... – 2010-05-17 20:22:44

+0

@Cristian可能運行在具有不同窗口文化的機器上。如果你沒有指定任何.net與Windows區域設置 – 2010-05-17 20:23:57

-2

看來你正在處理錢,所以應該使用decimal類型而不是double

+0

-1評論,不是一個答案,因爲這不能回答他的問題。雖然你用小數 – 2010-05-17 20:19:14

+0

-1正確。這個答案與這個問題有什麼關係? – brickner 2010-05-17 20:19:30