关于double==0判断的优化
2010-09-04 16:03 小尘 - 在希望的田野上 阅读(5220) 评论(0) 收藏 举报
double在内存中的存储方式如下:
在判断一个double值是否等于0的时候,计算机先要把这个double值转化为一个真正的值,而计算机对位运算时最快的,因此可以优化为如下代码:
public static bool IsNull(double f)
{
DoubleOrLong val = f;
return val.IsZero;
}
[StructLayout(LayoutKind.Explicit)]
private struct DoubleOrLong
{
public static implicit operator DoubleOrLong(double f)
{
return new DoubleOrLong { D = f };
}
public bool IsZero
{
get { return U == 0u; }
}
[FieldOffset(0)]
private double D;
[FieldOffset(0)]
private readonly ulong U;
}
浙公网安备 33010602011771号