浮点数加法出错
编号:QA001496
建立日期: 1999年8月11日 最后修改日期:1999年8月11日
所属类别:
zhanghy:
操作系统WIN97和WIN98,编程语言为Powerbulid6.5
我用Powerbulid6.5建立一个表,表内建A1~A11共11个字段,各字段类型均为numeric,12,2,用此表建立数据窗口,在此数据窗口为A11定义了有校性录入规则定义为numeric(gtetext())=a1+a2+a3+...+a10
然后建立一窗口并将上述数据窗口置于其中,在窗口的itemerror事件中定义了错误信息,问题出在当A1~A10中的小数位大于0.70时竟会引起加法出错,例如:A1=0.7,A2=0.71,A3=0.72,A4=0.73...A10=0.79, A11=7.45就会出现错误信息,而将A1=0.71,A2=0.72,A3=0.73...A9=0.79,A10=0.70,A11=7.45又正确。 类似上述状况很多,自己总查不出原因,请专家指点。
回答:
th建议:
估计是PB浮点数内部表示的问题!比如在DW中0.7用Getitemnumber取出到变量ld_var(dec类型)的时候,用MessageBox("提示信息",string(ld_var))显示变量ld_var的值时,
发现ld_var是0.699999999999999999...,可以把有效性录入规则定义为:
round(numeric(gtetext()),n)=round(a1,n)+round(a2,n)+...+round(a10,n)
其中:n为需要精确的最大小数位数,试一试,可能成功。
马静建议:
你试一试把A1-A10的小数位数变为3位。
此问题由th、马静回答。
| |
|
|
| |
|
|