新手学delphi,遇到问题了,大大们帮帮忙吧~!!
var
a,b,c:integer;
d:Double;Begin
a:=b-c*d;
End;编译时出错,请教高手们如何解决呢,如果用Round去四舍五入的话会降低精度,有没有更好的方法啊,谢谢大家了,不知道半夜了坛子里还有人吗,如果可以解决此问题的高手白天看到,麻烦也帮帮忙吧,谢谢啦~~!!

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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