以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教四舍五入的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=153392)

--  作者:18871608810
--  发布时间:2020/8/10 9:16:00
--  请教四舍五入的问题
我想保留2位小数,真实的四舍五入,使用ROUND2()函数,有一小部分的数据,第三位小数是五的没有“入”,例如:19.275,ROUND2(19.275,2)结果是19.27,不是19.28,请教这个问题怎么解决,目前已使用过Convert函数,ROUND,ROUND2,只有ROUND2是最接近四舍五入的,但是还是有例外情况,请教怎么解决? 
--  作者:有点蓝
--  发布时间:2020/8/10 9:19:00
--  
论坛里搜素“四舍五入”后很多解决方法,如:

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=139967&replyID=&skin=1

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=139174&skin=0

--  作者:18871608810
--  发布时间:2020/8/10 16:43:00
--  
感谢,希望以后Foxtable能出一个真正的四舍五入函数
--  作者:有点蓝
--  发布时间:2020/8/10 16:53:00
--  
四舍六入五成双是合理的。

不同的用法自己做个函数处理就行了

--  作者:绿火柴
--  发布时间:2020/8/10 21:31:00
--  
蓝版,这样子不合理..
那为什么excel中,SQL中都是可以显示成19.28呢.

使用同样的.round函数
不过使用帮助中的例子,也是可以接受的.
以下是帮助中的例子:

如何实现四舍五入

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

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

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

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

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

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

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

[此贴子已经被作者于2020/8/10 21:36:42编辑过]

--  作者:有点蓝
--  发布时间:2020/8/10 21:53:00
--  
合理不合理不是我定义的:https://www.baidu.com/baidu?word=四舍六入五成双