Function min(x As Single, y As Single) As Single
Dim z As Single
If x < y Then
z = x
Else
z = y
End If
min = z
End Function
用上面的代码算出来,比如原来的数是1.2,算出来的min是1.20000004768371,这个问题怎么解决?
还有为什么用 Application.WorksheetFunction.min(a,b)不会出现这样的问题?谢谢!
好像有的时候用Application.WorksheetFunction.min(a,b)也会出现,有时又不会,不知道为什么。。。
经过测试,情况如下:使用我自定义的最小值算法,不管是min(115.1,468)还是min(1579.1-1464,468),结果都是115.09997558;如果使用Application.WorksheetFunction.min(115.1,468),算出来的是115.1,如果Dim a!,b!用Application.WorksheetFunction.min(a-b,468),算出来的又是115.09997558
我用的是单精度啊?是single不是double,你看错了吧
追答你看不懂上面的程序吗?
我是说你调用min()后你怎么处理后的,你要把min的结果放入什么变量或什么地方。
如果你直接放入单元格可以试一下cdec(min(1.3,1.2))
试过了,精确度提高了不少,但是随着不断计算到后面还是会有误差。因为我那个程序编的时候有一个条件是要加起来相等才向下运算,用这个函数之后到后面加起来已经完全相等了(就是我自己手动相加两者在单元格内均相等,不会出现例如0.0000001这种,误差已经非常非常小了),但是在程序中判断的时候还是会判断出不一样,好纠结。。。还能再精确一点吗?或者要判断“几个数之和是否等于另外一个数”有别的算法?
追答if abs(x1-x2)<0.00001 then ...
是啊是啊,怎么解决?好纠结