高手们,
    为何
var
aa:single;
...
..
       aa:=strtofloat(str(2.8));
结果是:
      aa:=2.7999535882;而不是2.8;如何实现是aa:=2.8

解决方案 »

  1.   

    var
    aa:Currency;
    ......
      aa:=strtofloat('2.8');
    浮点型有误差
      

  2.   

    浮点数有误差
    改为strtocurr(str(2.8));
      

  3.   

    这个结果没问题。楼主大概不知道小数是如何表示的吧?这个学校里会教的,楼主不认真听,怨不得别人。IEEE 里的浮点数是这么来的:
    整数+指数。
    这里的整数、指数都是2进制的。而指数的底数也是2。
    这下你该明白了吧?
    比如:(011)     (110), 表示 3 * 2 ^ (-2) = 3 * 1/4 = 0.75。
          ^^ 整数   ^^^^^ 指数 <<< ---- 用的都是反码。
      

  4.   

    用format('%.2f',[])吧,这个行,
      

  5.   

    zhengji(看雨飞) 解释的好清楚。。
    赞同
      

  6.   

    再来,我都快吐血了。Object Pascal, VB 为了提高在金融领域的应用能力,引入了一种精度更高的数据类型:
    Currency, 都是编译器内置的, 楼主可以看看帮助中的介绍。