ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: apolloh

保留有效位数并四舍六入2004-11-26新*

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-5-7 22:14 | 显示全部楼层

谢谢所有楼上的朋友们!

只恨相见太晚,但终有幸得以拜读。

TA的精华主题

TA的得分主题

发表于 2005-6-28 14:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

请问楼主怎样用自定义函数实现精确小数位数,如要求精确到0.1 0.01 0.001 0.001 或者是精确到10 100等等!

具体修约规则和保留位数修约一样:

例:

精确到10有:55-60 45-40 45.1-50

精确到1的:5.5-6 4.5-4 4.51-5

精确到0.1的:0.55-0.6 0.45-0.4 0.451-0.5

需要注意的和保留位数的修约一样,就是如果五后面还有数值的哪怕是0.000001那还是按照四舍五入正常进位!

请楼主和各位高手多多帮忙!我是应用在建筑工程上的修约法则!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-28 14:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-6-28 14:40 | 显示全部楼层
以下是引用apolloh在2005-6-28 14:33:00的发言:

不用改了,Round2的第二个参数就是设置有效位数的。

保留有效位数和精确大到0.0几还是有区别的啊!因为在实际的工作中有可能一遇到下面一种情况

例如:

精确到10的1155-1160(这个是保留三个有小数值)

955(如果也是按保留三个有效数值进行修约的话就不是精确到10了)就成为955了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-28 15:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

A1为数值,B1为精确位数

=ROUND(A1,B1)-(RIGHT(A1*10^B1,2)=".5")*10^-B1

TA的精华主题

TA的得分主题

发表于 2005-6-28 16:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

已经好了!谢谢!

TA的精华主题

TA的得分主题

发表于 2005-8-16 18:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-7-2 14:31 | 显示全部楼层

apolloh老师:

  能不能把自定义函数解法格式整理一下,没有换行我看不大明白

  麻烦了,谢谢

  在线等!

TA的精华主题

TA的得分主题

发表于 2006-7-2 17:53 | 显示全部楼层

第一次是在其他地方看到这个四舍六入问题的时候,当时还给了个公式:

=IF(AND(RIGHT(A1,1)="5",FIND(".",A1)+x+1=LEN(A1)),--(LEFT(A1,LEN(A1)-2)&EVEN(MID(A1,LEN(A1)-1,1))),ROUND(A1,x))

其中X为保留小数位数。此公式只针对位数不是太长且不用科学计数法表示的数字。

但看看黄版主的整理出来的几个公式好像要复杂得多,弱弱的问一句,是为了适应浮点运算和科学计数法才搞得这么复杂吗?

TA的精华主题

TA的得分主题

发表于 2006-7-2 21:30 | 显示全部楼层

Chrisfang:

如果A1大于5,保留一位小数,小于5保留两位小数,对吗?

=IF(A1>4.995,IF(AND(RIGHT(A1,1)="5",FIND(".",A1)+1+1=LEN(A1)),--(LEFT(A1,LEN(A1)-2)&EVEN(MID(A1,LEN(A1)-1,1))),ROUND(A1,1)),IF(AND(RIGHT(A1,1)="5",FIND(".",A1)+2+1=LEN(A1)),--(LEFT(A1,LEN(A1)-2)&EVEN(MID(A1,LEN(A1)-1,1))),ROUND(A1,2)))

还有一个问题想请教您,要求保留小数位数,如:0.60、6.0、(您的公式返回为0.6、6),该如果解决?

再次谢谢您啦!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 02:21 , Processed in 0.044557 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表