vb6.0中如何比较两个double数大小相等?
我用了一个判断
If (i ^ i1 + j ^ j1) = (k ^ k1) Then
结果却发现,当j ^ j1=k ^ k1=2.77517307376699E+21,而i ^ i1不等于0时,居然也会成立这是怎么回事啊,还有一个问题是:可不可以让k ^ k1不用E+表达,直接显示数字大小啊

解决方案 »

  1.   

     由于浮点数是不准确数据(小数点后某位开始会不准确),因此一般不能使用等号判断相等可以使用
    if abs(f1-f2)<delta then '相减后绝对值小于某个很小的数,则认为相等
      

  2.   

    另一个问题,可以自己写一个函数转化。判断是否有E,然后用Mid函数提取数字和指数,最后用数字乘以10的指数次方。
      

  3.   

    在我看来比较两个Double数据的大小很容易的事情啊?不就是d1-d2,看结果啊?难道楼主的提问另有含义?有个想法,不论什么类型的数据都是存储在内存中的,那么比较两个Double类型的数据可以使用CopyMemroy来读取Double类型的每一个字节,对位比较。如果某个字节不一致,那么这两个数据就不相等。
      

  4.   

    如果两个double在内存中的存储完全一致,用等于号就可以比较了,无需CopyMemory,否则(lz就是这种情况)由于计算和转换精度误差,只能用1L的办法。总之,永远也用不到CopyMemory,除非无聊。