C# (double类型)文本值中奇怪的、意外的更改

C# (double类型)文本值中奇怪的、意外的更改,c#,visual-studio-2010,double,constants,C#,Visual Studio 2010,Double,Constants,我觉得这里有一个简单的解决方案,但我就是找不到。我有一个常量0.05。在整个程序的执行过程中,我发现双常数不是被当作0.05,而是被当作0.049999…等等 为什么会发生这种情况,我该如何预防 提前感谢您的帮助 -马特 PS-我会发布快照以提供更多信息,但显然我不能,因为我是一个新用户。。。老鼠。没有0.05的二进制表示法,因为1/20不是2的幂,所以浮点(双精度)表示法只是近似值。另一方面,0.5可以精确表示 如果v是您的文字,那么(v==0.05)应该是“true”哪种语言?通常“doub

我觉得这里有一个简单的解决方案,但我就是找不到。我有一个常量0.05。在整个程序的执行过程中,我发现双常数不是被当作0.05,而是被当作0.049999…等等

为什么会发生这种情况,我该如何预防

提前感谢您的帮助

-马特


PS-我会发布快照以提供更多信息,但显然我不能,因为我是一个新用户。。。老鼠。

没有0.05的二进制表示法,因为1/20不是2的幂,所以浮点(双精度)表示法只是近似值。另一方面,0.5可以精确表示


如果v是您的文字,那么(v==0.05)应该是“true”

哪种语言?通常“double”是一个近似值,而不是一个精确值。在VisualStudio2010中。我发现问题实际上在于我正在执行的模运算。1.7%0.05返回0.049999999。。。我想我把float和double弄混了,而不是0.oops。我建议检查/搜索有关浮点运算精度的信息。谢谢你的建议,我想你已经了解了一些东西!