C#中Double类型比较

      记个小笔记:在数学计算中10 次 0.1 相加应该等于1,但是在计算机中计算并不为1,而是0.99999999999999989。

那么一般的比较方法如“==”、Equals就不适用了。还好双精度计算有个误差值为1E-6;下面附上代码:

public  static void Test()
{
    double value1 = 0;
    double value2 = 1;
    for (int i = 0; i < 10; i++)
        value1 += 0.1;  
    DoubleEquals(value1, value2); //value1 = 0.99999999999999989
}

比较方法:

/// <summary>
/// double比较大小
/// </summary>
/// <param name="value1"></param>
/// <param name="value2"></param>
/// <returns></returns>
public static bool DoubleEquals(double value1, double value2)
{
    //双精度误差
    var DOUBLE_DELTA = 1E-6;
    return value1 == value2 || Math.Abs(value1 - value2) < DOUBLE_DELTA;
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值