以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教,表达式四舍五入的问题? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44876) |
-- 作者:ericsky -- 发布时间:2014/1/10 20:14:00 -- 请教,表达式四舍五入的问题? 如:Convert(698236.5,\'System.Int64\') = 698236,而不是698237? 这很奇怪,请教要如何设置? 谢谢!!
|
-- 作者:有点甜 -- 发布时间:2014/1/10 20:20:00 -- 可以这样写 Convert(698236.5 + 0.1 ,\'System.Int64\')
[此贴子已经被作者于2014-1-10 21:02:41编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/1/10 20:21:00 -- 或者参考 |
-- 作者:ericsky -- 发布时间:2014/1/10 20:29:00 -- 可是: Convert(698236.6,\'System.Int64\') 又可以等于698237。 不知道怎么回事,头大了! 再测试下,Convert(698015.5,\'System.Int64\') 却又 = 698016 上面的帮助说明,是指取两位小数点的四舍五入,不知道直接取整数如何四舍五入? 谢甜老师帮我!
[此贴子已经被作者于2014-1-10 20:33:15编辑过]
|
-- 作者:yinyb36 -- 发布时间:2014/1/10 20:53:00 -- 这是四舍六入五留双 |
-- 作者:有点甜 -- 发布时间:2014/1/10 21:03:00 -- 好像不行的样子! [此贴子已经被作者于2014-1-10 21:04:24编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/1/10 21:14:00 -- 试了一下,可以用表达式做,根据5楼的规则,但要写很长一段表达式。建议直接用代码实现表达式的内容。 |
-- 作者:ericsky -- 发布时间:2014/1/10 21:54:00 -- 哎,好多的数值计算都应用了表达式,就是想用表达式的优势,这下都要改了! 我自己在琢磨看看。
谢甜老师,让您费心了! |
-- 作者:ericsky -- 发布时间:2014/1/10 23:01:00 -- 终于找到答案了,把相关的计算列数据类型改为双精度小数,然后: Convert(["xx] * ["xx"} + 0.000001,\'System.Int64\') 就可以了 下面的内容是狐爸 2011年回帖的内容: 四舍六入五成双是一种精确度的计数保留法.这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数逢五的话看前一位,奇进偶不进。如1.25保留一位小数,因为2是偶数,所以是1.2。又如1.35,因为3是奇数,所以是1.4。 从统计学的角度,"四舍六入五成双"比"四舍五入"要科学,它使舍入后的结果有的变大,有的变小,更平均.而不是像四舍五入那样逢五就入,导致结果偏向大数. 例如:1.15+1.25+1.35+1.45=5.2,若按四舍五入取一位小数计算 1.2+1.3+1.4+1.5=5.4 按"四舍六入五成双"计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果。 如果这些东西能写进帮助,不是更好? |
-- 作者:包头123 -- 发布时间:2014/1/11 18:29:00 -- 搞的这么复杂啊。 |