今天接到客户投诉,说程式连简单金额都算错了!开始不信,后来客户将数据备份传过来,一看吓死人:
92*2.17=199.63
138*2.12=281.95
266*1.49=396.33
23*1.78=40.93
.....数据库里的确保存着以上结果,但现在重新用系统开单却又是正常,问题在哪里?与操作系统有否关系?
92*2.17=199.63
138*2.12=281.95
266*1.49=396.33
23*1.78=40.93
.....数据库里的确保存着以上结果,但现在重新用系统开单却又是正常,问题在哪里?与操作系统有否关系?
数据类型:数量(int),单价(decimal,9,18,4),金额:(decimal,9,18,4)注:结果有用Round及Power函数作两位数的四舍五入现在头痛的是,系统现在自已测试很正常,想找问题都找不到!!
我也相信我的程序有问题,只不过想找出真正的原因!
92*2.17=199.6400;
搞不清原因了。
//直接测试数据项。
var
i,j:real;//--double类型也是一样的结果了。。
begin
i:=strtofloat(edit1.text);
j:=strtofloat(edit2.text);
memo1.lines.add(edit1.text+'*'+edit2.text+'='+floattostr(i*j));
end;/。/----测试数据库读取。。
var
i,j:real;
begin
i:=ADODataSet1.Fields[1].AsCurrency;
j:=ADODataSet1.Fields[2].AsCurrency;
memo1.lines.add(edit1.text+'*'+edit2.text+'='+floattostr(i*j));
end;