以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 强烈建议能实现严格的“四舍五入” (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3751) |
-- 作者:shixia -- 发布时间:2009/7/30 15:16:00 -- 强烈建议能实现严格的“四舍五入” 老大,狐表的四舍五入,其实是“四舍六入五成双”,如果要严格的“四舍五入”则要多写很多代码。实际上我们在工作中是执行严格的“四舍五入”。狐表这样的处理给我们带来很多不方便,比如,我写的程序里有数据的动态分摊,其中涉及的数据量非常大,没有使用严格“四舍五入”代码后出现的结果是:分摊前的数据和分摊后数据和有时不等,差额为1,但是又不可能处处插入你提供的严格“四舍五入”代码,这给我们造成很大的麻烦。我建议狐爸还是按照人们习惯的要求,在程序里把“四舍六入五成双”改成严格的“四舍五入” |
-- 作者:狐狸爸爸 -- 发布时间:2009/7/30 15:18:00 -- 如果你要严格地四舍五入,可以参考下面的代码: Dim Digits As Integer = 2 \'要保留的小数位数,根据需要修改Dim Value As Double = 1.245 \'要进行四舍五入的小数值 Value = Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits \'四舍五入 Output.Show(Value) \'显示四舍五入后的值 |
-- 作者:cpayinyuan -- 发布时间:2009/7/30 15:23:00 -- 已经提了N*N遍了,提供一个标准的四舍五入函数,但贺老师总认为不重要,我都不想再说了!在实际工作中究竟是标准四舍五入用得多还是四舍六入五成双用得多,傻子都清楚.本来一个函数都能解决的问题,非要让大家每次都写一行长长的代码,实在让我没脾气! 如果VB中没有标准的四舍五入,强烈建议贺老师自己写一个,虽然简单,但使用频率非常高,希望这次贺老师不要嫌这件事太小不值得动手! |
-- 作者:狐狸爸爸 -- 发布时间:2009/7/30 15:28:00 -- 这样的东东,多简单啊: Math.Floor(x* 10 ^ y + 0.5) / 10 ^ y x数值,y小数位数。 |
-- 作者:shixia -- 发布时间:2009/7/30 15:50:00 -- 你说的没错,但是在长长的代码中,不断地去插入代码,还要留心代码中数据引用关系,弄不好就出错,为什么就不能改进一下,让我们少死一些脑细胞呢,还是请狐爸体谅我们的难处,把主要精力放在主要的代码上,代码太长了,出错都不好检查。 |
-- 作者:czy -- 发布时间:2009/7/30 16:32:00 -- 如果觉得需要。 可以将老六的代码集成到Code中,用时插入即可。 可以将老六的代码自定义成一个函数,用时调用即可。 |
-- 作者:shixia -- 发布时间:2009/7/30 17:38:00 -- 这么简单的事,老六就是不解决,固执啊 ![]() |
-- 作者:狐狸爸爸 -- 发布时间:2009/7/30 17:47:00 -- 绝对不是固执,是没有办法,math类的函数是.net内置的,我是没有办法修改和加入的。 如果另外来一个的话,就是: 常规的: Math.Round 四舍五入的: Roun2 同一个用途的函数,位于不同的空间,不伦不类,又不是什么特别重要的东西,值得这样做。 [此贴子已经被作者于2009-7-30 17:47:38编辑过]
|
-- 作者:wcs -- 发布时间:2009/7/30 18:09:00 -- 四舍五入非常重要的! |
-- 作者:cpayinyuan -- 发布时间:2009/7/30 19:30:00 -- 以下是引用狐狸爸爸在2009-7-30 17:47:00的发言:
如果另外来一个的话,就是: 常规的: Math.Round 四舍五入的: Roun2 同一个用途的函数,位于不同的空间,不伦不类,又不是什么特别重要的东西,值得这样做。 贺老师,你这样做完全可行,也很容易实现! [此贴子已经被作者于2009-7-30 19:31:56编辑过]
|