以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  四舍五入  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=5688)

--  作者:lihe60
--  发布时间:2009/12/29 10:00:00
--  四舍五入

Convert([数量] * [单价] * (1 - [折扣]) * 100, \'System.Int64\') / 100
不能用,贺老师能增加一个四舍五入的函数吗?如
函数名([金额],3),对金额小数点后三位四舍五入。


--  作者:lihe60
--  发布时间:2009/12/29 10:01:00
--  
四舍五入,很重要。
--  作者:狐狸爸爸
--  发布时间:2009/12/29 10:05:00
--  
当然能用的。
--  作者:i52117
--  发布时间:2009/12/29 10:13:00
--  

如何实现四舍五入

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

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

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

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

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

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

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


--  作者:lihe60
--  发布时间:2009/12/29 10:17:00
--  
Convert([数量] * [单价] * (1 - [折扣]) * 100, \'System.Int64\') / 100
这个代码写不到datacolchanged事件中去的。
--  作者:狐狸爸爸
--  发布时间:2009/12/29 10:21:00
--  

代码是代码,表达式是表达式,各有自己的语法和函数,岂能混用?

代码用round函数


--  作者:lihe60
--  发布时间:2009/12/29 10:43:00
--  
round用起来比较复杂,能不能简单点,如round(val,2)这样的格式。
--  作者:狐狸爸爸
--  发布时间:2009/12/29 10:53:00
--  
round复杂?
这样的代码还复杂:

Math.Round(4.567,2)

图片点击可在新窗口打开查看
[此贴子已经被作者于2009-12-29 10:53:36编辑过]