奇怪解析双行为
我有这行代码:奇怪解析双行为
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返回一个字符串。
你使用的是什么十进制分隔符,我的猜测是','。尝试
Double.Parse(UtilsStatic.getEuroValue(),
System.Globalization.CultureInfo.InvariantCulture)
它将使用'。'来解析数字。作为小数点分隔符。
这就是我的想法:) – 2010-05-17 20:19:55
非常感谢你们两个人......它现在与IC合作......奇怪的是,这段代码工作得很好,虽然我开发了新的模块,但我不知道它是如何实现的已被破坏...... – 2010-05-17 20:22:44
@Cristian可能运行在具有不同窗口文化的机器上。如果你没有指定任何.net与Windows区域设置 – 2010-05-17 20:23:57
看来你正在处理钱,所以应该使用decimal
类型而不是double
。
-1评论,不是一个答案,因为这不能回答他的问题。虽然你用小数 – 2010-05-17 20:19:14
-1正确。这个答案与这个问题有什么关系? – brickner 2010-05-17 20:19:30
如果使用InvariantCulture会发生什么? – 2010-05-17 20:17:35