2010-05-17 138 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