原来程序中计算金额时用SimpleRoundTo(t, -2),后来发现一些特殊的值会出错,如33.245,现改用trunc(t*100+0.5)/100,大致测试后正确,但不敢保证特殊情况下不出错,请教对这个有较深入研究的朋友,这样做是否能保证正确,或是有其它更好的方法

解决方案 »

  1.   

    楼上的round的是一个办法。
    format也可以
    以前有讨论过,可以翻阅
      

  2.   

    round(t*100)/100 或者 RoundTo(123.369,2)
      

  3.   

    round为四舍五入,trunc为截整。
      

  4.   

    本人近来比较忙,又需要几篇有水平的文章发表,如果哪位有料,把我的大名带上,只需在发表时把我作为作者之一即可,最好是第一作者;我将支付丰厚稿费给阁下。联系:[email protected]
      

  5.   

    如果是精确到小数点后面两位,并四舍五入的话:
    FormatFloat('#0.00', a);
    其中a就是你最开始得到的结果。其他的以此类推就可以了。
      

  6.   

    round是用银行家取整法,是四舍六入五双的算法,我要的是完全的四舍五入。
    刚刚发现一个问题,用trunc(t*100+0.5)/100或FormatFloat('#0.00', a)都会算错:15.22499 --> 15.23
    还要高招吗?