发布7个四舍五入的函数,不看不知道,一看吓一跳

专注编程优化20年 2013-08-24 12:13:04
round(3.1456,2)=3.15
round(3.145,2)=3.14
round(3.145,1)= 3.1
round(3.146,1)=3.1
round(3.256,1)=3.3
round(3.255,1)=3.3
round(3.25,1)=3.2
求好心人告知 round 怎么运作的
...全文
309 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2013-08-27
  • 打赏
  • 举报
回复
英文 MSDN:
Round Function Description Returns a number rounded to a specified number of decimal places. Syntax Round(expression [,numdecimalplaces]) The Round function syntax has these parts: Part Description ------------------ -------------------------------------------- expression Required. Numeric expression being rounded. numdecimalplaces Optional. Number indicating how many places to the right of the decimal are included in the rounding. If omitted, integers are returned by the Round function.
中文 MSDN 中的四舍五入是翻译错误,正确的术语应该舍入或取整,随意脑补的翻译坑了不知多少人。 How To Implement Custom Rounding Procedures 一文对舍入做了具体说明。 又:微软的 Basic 的目标是商用软件,有一种对 BASIC 命名的释义与通常的 (Beginner's All-purpose Symbolic Instruction Code) 不同,具体记不全了,其中 B 是 Business 的缩写。 自带的函数库中,VBA.Financial 下面有十几个财务相关的函数。 所以 Round 函数采用所谓银行家舍入法(Banker's Rounding)的“四舍六入五成双”舍入法不稀奇。这是对借贷双方完全平等的舍入方式,而不像四三五人法有偏向性。
贝隆 2013-08-27
  • 打赏
  • 举报
回复
Round函数 描述 返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。 语法 Round(expression [,numdecimalplaces]) Round函数语法有如下几部分: 部分 描述 expression 必需的。要进行四舍五入运算的数值表达式。 numdecimalplaces 可选的。数字值,表示进行四舍五入运算时,小数点右边应保留的位数。如果忽略,则Round函数返回整数。
Treenewbee 2013-08-26
  • 打赏
  • 举报
回复
所谓的“四舍六入五成双”
worldy 2013-08-24
  • 打赏
  • 举报
回复
四舍五入五不入 比如 4.55==>4.5 /4.51-->4.6
  • 打赏
  • 举报
回复
大家有什么得意的算法或函数,也可以公开交流一下,补充大家的弹药库,每一个函数都是我们的一粒子弹哦,没有函数,就没有新生活。 这是国际标准,我们所说的四舍五入只是一个通常用法,精确一点就是ROUND 最近在做一个报表,这个报表有个原例子,原例子是用asp做的,按理两个报表显示的结果应该是一样的。可不知为什么,显示的小数总是差点,找来找去原来是round函数惹的。 VB6中文版说Round函数是四舍五入函数,实际上这个函数采用的四舍六入五留双。VB的Round所采用的算法是这样的: 1.25留一位,则1.2=round(1.25) 如果是1.35,则1.4=round(1.35) 奇进偶不进。这样在一大串需要四舍五入的数相加相减相乘时误差小一点。eg:1.25+1.35+1.45+1.55+1.15+1.65=8.4=round(1.25)+round(1.35)+round(…… ROUND函数符合国家和国际标准,该函数是正确的。原先的四舍五入只是一个简化。 在微软的Knowledge Base的文章:“Q194983 PRB: Round Function Different in VBA 6 and Excel Spreadsheet”和微软的Knowledge Base的文章:“Q189847 INFO: New String and Format Functions in Visual Basic 6.0”中都指出Round函数实行Banker舍入,而不是我们习惯的算术舍入(四舍五入)。你可以参考微软的Knowledge Base的文章:“Q196652 HOWTO: Implement Custom Rounding Procedures”,它对于舍入问题有详细的讨论。

Private Sub Command1_Click()
Text4 = 四舍五入6(Text1, Text2)
Text3 = 四舍五入(Text1, Text2)
End Sub
Function 四舍五入(数字, 小数位数)
   四舍五入 = Format(数字, "." & String(小数位数, "0"))
End Function

Private Sub Form_Load()
Text1 = 3.145
Text2 = 2
Text3 = ""
Text4 = ""
End Sub

Function 四舍五入1(数字, 小数位数)
Dim C As Long
C = 10 ^ 小数位数
四舍五入1 = Int((数字 * C + 0.5)) / C
End Function
Function 四舍五入2(数字, 小数位数)
On Error Resume Next
Dim v As Long, D As Long
D = InStr(数字, ".")
v = Mid(数字, D + 小数位数 + 1, 1)
四舍五入2 = Left(数字, D + 小数位数) + IIf(v > 4, 0.1 ^ 小数位数, 0)
End Function
 
Function 四舍五入3(数字, 小数位数)
Dim C As Long
C = 10 ^ (小数位数 + 1)
四舍五入3 = Int((数字 * C + 5) / 10) / C * 10
End Function
Function 四舍五入4(数字, 小数位数)
 四舍五入4 = Format(数字, Left(0.1 ^ (小数位数 + 1), 小数位数 + 1))
End Function
Function 四舍五入6(数字, 小数位数)
'国际标准,四舍六入五留双
 四舍五入6 = Round(数字, 小数位数)
End Function
Function 四舍五入7(数字, 小数位数)
Dim C As Long
C = 10 ^ 小数位数
四舍五入7 = Fix((数字 * C + 0.5)) / C
End Function
舉杯邀明月 2013-08-24
  • 打赏
  • 举报
回复
round()函数,好象是 在舍入位为5时:   如果后面还有有效数字,就“入”(进位);     比如 round(3.25,1)=3.2 , round(3.25001,1)=3.3   如果没有,就“留双”(要保留的那位是奇数,就进位;要保留的那位是偶数,就去尾)。     比如:round(3.35,1)=3.4 , round(3.25,1)=3.2 其它情况,大家都能很好理解了:   在舍入位小于5时(0~4)就去尾;在舍入位大于5时(6~9)就进位。
zetor 2013-08-24
  • 打赏
  • 举报
回复
可以自己写个函数来解决呀
源码直接下载地址: https://pan.quark.cn/s/387d7c8f6289 在使用IE浏览器的过程中,偶尔会出现重置为默认配置操作未能顺利完成的现象。这种情况的发生可能源于多种因素,包括注册表项出现偏差、浏览器附加组件之间存在不兼容、操作系统授权设置不当或受到恶意程序影响等。针对这一挑战,我们可以通过一系列系统性的方法来逐一诊断和纠正。首先需要验证当前用户是否具备管理员级别的操作权限。在执行重置配置的操作时,必须确保IE浏览器是以管理员身份启动的。具体操作方式为,使用鼠标右键单击IE程序图标,并从弹出的菜单中选择“以管理员身份运行”这一选项。其次,应当检查是否存在恶意软件。恶意程序有时会非法修改浏览器的配置信息,从而阻碍重置过程的正常进行。用户可以借助Windows系统自带的Microsoft Safety Scanner进行检测,或者选择安装并使用第三方安全防护软件执行全面的系统扫描。紧接着,需要对浏览器的缓存数据以及Cookies文件进行清理。在IE浏览器界面中,通过访问“工具”菜单并选择“Internet选项”,然后在弹出的设置界面中,切换至“常规”标签页,并执行清除浏览历史记录的操作,此过程应包含Cookies和临时互联网文件。倘若上述步骤均未能解决问题,那么可以考虑禁用或移除那些可能引发冲突的浏览器附加组件。相关操作需要在“工具”菜单下找到并打开“管理加载项”,对可疑的插件进行禁用处理,并在浏览器重新启动后再次尝试执行重置操作。再者,修复IE浏览器相关的注册表配置也是至关重要的环节。注册表编辑器是一个功能强大的系统工具,任何不当的操作都可能导致严重的系统问题,因此在进行修改前必须创建系统还原点作为安全备份。用户可以通过按下“Win+R”组合...
内容概要:本文详细介绍了光伏储能虚拟同步发电机(VSG)并网仿真模型的Simulink实现方法,系统研究了光伏发电与储能系统融合VSG技术并入电网的动态特性与控制策略。通过构建完整的VSG控制模块,模拟其在并网过程中的虚拟惯性响应、频率调节能力和有功无功功率支撑特性,验证了该系统在增强电网稳定性、提升新能源并网适应性方面的有效性。模型全面涵盖光伏出力特性、储能系统充放电管理、VSG有功-无功解耦控制、下垂控制机制以及并网点动态响应等关键环节,并通过多种工况下的仿真分析,评估系统在不同运行条件下的动态性能与鲁棒性。; 适合人群:具备电力系统、新能源发电、自动控制等相关专业背景,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制或电力电子系统研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①深入理解光伏储能系统如何通过VSG技术模拟同步发电机的惯性和阻尼特性以支持电网稳定;②掌握虚拟惯量控制、下垂控制等VSG核心控制策略在Simulink中的建模、参数设计与实现方法;③为新型电力系统中新能源并网的动态仿真、稳定性分析及控制策略优化提供可靠的模型基础和技术参考。; 阅读建议:建议结合所提供的仿真模型进行逐步操作与参数调试,重点关注VSG控制环路的结构设计、控制器参数整定及其对系统动态性能的影响,同时可将该模型拓展应用于多机并联、微电网孤岛/并网切换、多能源协同控制等更复杂的系统场景中进行进阶研究。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧