什么情况下可能出现如下的奇怪问题
问题:
1、最近在写一个程序的时候定义了一个类似如下的类
[解决办法]
使用浮点数据类型(single或者double)要注意
因为这些数据类型是有精度限制的,正如你上面说的1/2=0.4999999999989
不同类型精度不一样,浮点数最高精度好像是15位,也就是说只要满足精度要求他都是对的
如果不想这些造成问题,最好使用Decimal数据类型,这个尽管占用空间大点
但只要不是循环小数,绝对精确.
[解决办法]
把函数作如下修改试试:
Public Function test(ByRef temp As ClassElement, byval P As Double) As Double
temp.Density = P
'这个地方如果temp.Density赋值其它的数据的话,函数的返回值就会有所变化
temp.Stress_X = -P
temp.Stress_Y = -P
Return temp.Stress_X + temp.Stress_Y
End Function
或者
Public Function test(ByRef temp As ClassElement, byval P As Double,byval P1 As Double) As Double
temp.Density = P
'这个地方如果temp.Density赋值其它的数据的话,函数的返回值就会有所变化
temp.Stress_X = -P1
temp.Stress_Y = -P1
Return temp.Stress_X + temp.Stress_Y
End Function