vb6.0中怎么比较两个double数大小相等?
vb6.0中如何比较两个double数大小相等?在线等,急!
vb6.0中如何比较两个double数大小相等?
我用了一个判断
If (i ^ i1 + j ^ j1) = (k ^ k1) Then
结果却发现,当j ^ j1=k ^ k1=2.77517307376699E+21,而i ^ i1不等于0时,居然也会成立这是怎么回事啊,还有一个问题是:可不可以让k ^ k1不用E+表达,直接显示数字大小啊
------解决方案--------------------
由于浮点数是不准确数据(小数点后某位开始会不准确),因此一般不能使用等号判断相等
可以使用
if abs(f1-f2)<delta then '相减后绝对值小于某个很小的数,则认为相等
------解决方案--------------------
另一个问题,可以自己写一个函数转化。
判断是否有E,然后用Mid函数提取数字和指数,最后用数字乘以10的指数次方。
------解决方案--------------------
在我看来比较两个Double数据的大小很容易的事情啊?不就是d1-d2,看结果啊?难道楼主的提问另有含义?
有个想法,不论什么类型的数据都是存储在内存中的,那么比较两个Double类型的数据可以使用CopyMemroy来读取Double类型的每一个字节,对位比较。如果某个字节不一致,那么这两个数据就不相等。
vb6.0中如何比较两个double数大小相等?
我用了一个判断
If (i ^ i1 + j ^ j1) = (k ^ k1) Then
结果却发现,当j ^ j1=k ^ k1=2.77517307376699E+21,而i ^ i1不等于0时,居然也会成立这是怎么回事啊,还有一个问题是:可不可以让k ^ k1不用E+表达,直接显示数字大小啊
------解决方案--------------------
由于浮点数是不准确数据(小数点后某位开始会不准确),因此一般不能使用等号判断相等
可以使用
if abs(f1-f2)<delta then '相减后绝对值小于某个很小的数,则认为相等
------解决方案--------------------
另一个问题,可以自己写一个函数转化。
判断是否有E,然后用Mid函数提取数字和指数,最后用数字乘以10的指数次方。
------解决方案--------------------
在我看来比较两个Double数据的大小很容易的事情啊?不就是d1-d2,看结果啊?难道楼主的提问另有含义?
有个想法,不论什么类型的数据都是存储在内存中的,那么比较两个Double类型的数据可以使用CopyMemroy来读取Double类型的每一个字节,对位比较。如果某个字节不一致,那么这两个数据就不相等。