以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  四舍五入 表达式列计算结果不准确,经常出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=37918)

--  作者:louis_sun
--  发布时间:2013/7/15 13:54:00
--  四舍五入 表达式列计算结果不准确,经常出错

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

表达式并没有提供传统的四舍五入函数Round,我们只能用Convert函数来间接实现。

例如金额列原来的计算公式为:

[数量] * [单价] * (1 - [折扣])

为了保留两位小数,可以将公式改为:

Convert([数量] * [单价] * (1 - [折扣]) * 100, \'System.Int64\') / 100

原理很简单:将计算结果乘以100,然后取整,最后除以100。

如果你要保留三位小数,将表达式中的100改为1000即可,其余类推。



为什么我的机器,输入  Convert(0.005*100, \'System.Int64\') / 100 

显示的结果 是 0

Convert(0.006*100, \'System.Int64\') / 100  

显示的结果才是0.01


[此贴子已经被作者于2013-7-15 16:06:28编辑过]

--  作者:louis_sun
--  发布时间:2013/7/15 14:01:00
--  
?????????????????????????
--  作者:Bin
--  发布时间:2013/7/15 14:02:00
--  
你不是使用代码减少0.005了?  否则0.006怎么会算出0.01来.
--  作者:狐狸爸爸
--  发布时间:2013/7/15 14:04:00
--  
Convert(0.005 *100 + 0.00000001, \'System.Int64\') / 100
--  作者:Bin
--  发布时间:2013/7/15 14:10:00
--  
或者 Convert(0.005*100, \'System.Decimal\') / 100
--  作者:louis_sun
--  发布时间:2013/7/15 14:23:00
--  
可是为什么我的这个项目里,“公企明细”表里的“计费单价”列显示的结果是43.72.。
用excel算的结果却能正常显示43.73。
上面两个方法我都试了,都不好使啊!
[此贴子已经被作者于2013-7-15 14:26:25编辑过]

--  作者:louis_sun
--  发布时间:2013/7/15 14:32:00
--  
???????????????????????????????????????????????
--  作者:louis_sun
--  发布时间:2013/7/15 14:35:00
--  
??????????????????????
坐等回复!!!!!!!!!!!!!!!!!

--  作者:Bin
--  发布时间:2013/7/15 14:35:00
--  
例子发出来看看.包括你Excel计算的例子.
--  作者:louis_sun
--  发布时间:2013/7/15 14:36:00
--  
例子在1楼。。。。