以文本方式查看主题 - 易表在线答疑 (http://egrid2000.com/dvbbs/index.asp) -- 用户社区 (http://egrid2000.com/dvbbs/list.asp?boardid=2) ---- [讨论]奇怪的INT函数,请求支援 (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=3052) |
-- 作者:swws -- 发布时间:2010/12/11 12:09:00 -- [讨论]奇怪的INT函数,请求支援 因为太简单,就不上传文件了! 很简单一个表,简单的一个刷新公式c=a*b,然后用INT取整,却在月底对帐时让我郁闷了。少了一块钱,反复比对才找到错误出在INT函数上。C的刷新公式为INT(a*b),a的值是21.49,b的值是5400,都是输入的数据而不是计算得出的,这样就排除了小数位显示不全的可能。21.49X5400=116046,可INT一套就成了116045了,打电话咨询被告知可能是无限接近造成的偏差,让我用round函数,可我是要去零取整呀,用round那结果就没法用了。而且这两个数相乘跟6X6=36有什么区别呀!!!随数据量的增大,类似的错误恐怕还会出现,而现在我只能用21.49*5400.01才能修正,呵呵! 哪位老师有更好的办法? |
-- 作者:wjq1072 -- 发布时间:2010/12/11 12:33:00 -- Format(21.49 * 5400,"0")=116046 -Int(-21.49 * 5400)=116046 Round(21.49 * 5400,0)=116046 |
-- 作者:swg-1954 -- 发布时间:2010/12/11 12:39:00 -- 这样试试 egd文件下载 |
-- 作者:lyjzyq -- 发布时间:2010/12/11 20:43:00 -- Int(Eval(21.49*5400))可以,因为int函数是对一个数的取整,如果是表达式,可以先计算再取整。 |
-- 作者:swws -- 发布时间:2010/12/26 13:28:00 -- 多谢各位,好久没上来看了,等下我都试一下! |
-- 作者:swws -- 发布时间:2010/12/26 14:10:00 -- 2楼 wjq1072 前辈的Round(21.49 * 5400,0)=116046,不适用。这样就4舍5入了,而单价X数量得出的金额付款时是会把小数部分去掉的,5入后的计算结果就会比实际付款多一块钱,这样会产生不少多一块的结果,月底对帐就麻烦了。 format(21.49 * 5400,"0")=116046和round怎么是同样的结果,也4舍5入了 -Int(-a * b)也是同样的结果 3楼和4楼的方法有效,谢谢各位!!! |