+ -
当前位置:首页 → 问答吧 → 关于integer和double混合运算的问题

关于integer和double混合运算的问题

时间:2011-12-01

来源:互联网

新手学delphi,遇到问题了,大大们帮帮忙吧~!!
var
a,b,c:integer;
d:Double;

Begin
a:=b-c*d;
End;

编译时出错,请教高手们如何解决呢,如果用Round去四舍五入的话会降低精度,有没有更好的方法啊,谢谢大家了,不知道半夜了坛子里还有人吗,如果可以解决此问题的高手白天看到,麻烦也帮帮忙吧,谢谢啦~~!!

作者: a80141783   发布时间: 2011-12-01

为什么不全部定义为integer或者double类型?

作者: kaikai_kk   发布时间: 2011-12-01

都用double

作者: bdmh   发布时间: 2011-12-01

引用 2 楼 bdmh 的回复:
都用double

对,将原来定义为Integer类型的改为Double类型就解决了,不存在四舍五入的问题

作者: csn168   发布时间: 2011-12-01

去看看integer,single,double等等类型的范围。。。

作者: hongss   发布时间: 2011-12-01

把b和c转换成double
a如果要求精度就直接定义成double

作者: lhylhy   发布时间: 2011-12-01

double和float 本身的存储方式决定了他不会精确的,经常出现.9999之类的问题,所以才要用四舍五入或者其他运算方法来弥补这个问题,这点在使用前就应该有所觉悟滴,不要妄想有一种完美的精度解决方案,只有最适合你的精度解决方案,另外不要被C#里的decimal忽悠了,那玩意为了精确,占用了16个字节

作者: funxu   发布时间: 2011-12-01

Begin
a:=b-c*d;
End;
你的这个b-c*d肯定会产生小数,而你的a则是一个整型的数,所以前后会矛盾的。
解决方法:
1、把a 变成有小数的变量。
2、把C*D取整处理变成整数也可以。

作者: babydog01   发布时间: 2011-12-01

热门下载

更多