在.NET中,直接比较浮点数(double、float)的相等性是不安全的。变量中的双精度值可能会随着时间的推移而发生微小的变化。例如,如果您将变量num(double类型)设置为某个对象的0.2,然后该对象在内存中等待一段时间,您可能会发现num变成了0.1999999999999。所以在这种情况下,num == 0.2将会是假的。解决此问题的方法是创建一个属性来四舍五入保留小数。
在调用get Num并返回结果后,这个返回的数字在比较(Num==0.2)的时候会改变回0.19吗?虽然可能性不大,但能否保证它不会发生呢?
double Num
{
get{ return Math.Round(num, 1); }
}
在调用get Num并返回结果后,这个返回的数字在比较(Num==0.2)的时候会改变回0.19吗?虽然可能性不大,但能否保证它不会发生呢?