100分求助EXCEL中四舍六入保留小数点后位数的函数的写法!!!!!!

cuizhq0227 2006-06-24 12:05:42
有谁知道EXCEL中四舍六入保留小数点后位数的函数怎么写呀?

看清楚,是小数点后位数,不是有效位数。

...全文
3022 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousulin5 2006-07-18
  • 打赏
  • 举报
回复
=IF(MID(A1,FIND(".",A1)+3,1)="5",IF(A1=ROUNDDOWN(A1,3),IF(MOD(MID(A1,FIND(".",A1)+2,1),2)=0,ROUNDDOWN(A1,2),ROUNDUP(A1,2)),ROUND(A1,2)))
未考虑a1为空以及小数点后不足三位的情况。
zhousulin5 2006-07-18
  • 打赏
  • 举报
回复
发现用mid比我用right和left要好点,不过那个公式的mid多余一层,再改一下
=IF(RIGHT(LEFT(A1,FIND(".",A1)+3))="5",IF(A1=ROUNDDOWN(A1,3),IF(MOD(MID(A1,FIND(".",A1)+2,1),2)=0,ROUNDDOWN(A1,2),ROUNDUP(A1,2)),ROUND(A1,2)))
zhousulin5 2006-07-18
  • 打赏
  • 举报
回复
=IF(RIGHT(LEFT(A1,FIND(".",A1)+3))="5",IF(A1=ROUNDDOWN(A1,3),IF((MOD(VALUE(RIGHT(LEFT(A1,FIND(".",A1)+2))),2))=0,ROUNDDOWN(A1,2),ROUNDUP(A1,2)),ROUND(A1,2)))
cuizhq0227 2006-07-03
  • 打赏
  • 举报
回复
取两位小数的,

=IF(OR(LEN(A1-INT(A1))<=3,RIGHT(MID(A1,FIND(".",A1&".")+1,3))=5),ROUND(A1,2),IF(MOD(MID(MID(A1,FIND(".",A1)+1,3),2,1),2)=0,TRUNC(A1,2),ROUND(A1,2)))

如取三位小数,红色数字加1

这是EXCEL论坛上一会高手写的,可惜有点问题,谁能帮我再修改一下呀。
yappies 2006-07-01
  • 打赏
  • 举报
回复
学到一个新东东,可惜楼主不能自己给自己加分^_^
cuizhq0227 2006-06-30
  • 打赏
  • 举报
回复

ROUND(),在EXCEL中,是四舍五入。

四舍六入的具体规则是:
所谓的四舍六入指的是“四舍六入五单双法”取舍规则。其取舍方法是,凡末位数字的后面第一位数字大于5(指6, 7, 5, 9 )以及5,以后还有余数时, 则在其前一位上增加1,如:1.23501取小数点后两位小数时应为1.24,如:1.22501,应为1.23,小于5(指4, 3, 2, 1 )时,则舍去不计。而当两位数字后面第一位数字恰为5时,这时要视5之前的数字是奇数还是偶数而定,若前一位数字为奇数,则在其前一位上增加1, 是偶数, 则舍去不计。例如:1.235和1.225,取完后为1.24和1.22,我们对65.0137取两位小数和三位小数时, 则分别为65.01和65.014,又如对48.045和25.055取两位小数时,其应分别为48.04和25.06。

对于四舍六入取有效位数的问题,我已经找到解决办法。
http://club.excelhome.net/dispbbs.asp?boardID=3&ID=68996&page=1

请各位大蛱一定要看清楚问题再回答,谢谢!!!
蓝帆·雨轩 2006-06-30
  • 打赏
  • 举报
回复
呵呵,这两个Round有差异哦!
DawnPine 2006-06-30
  • 打赏
  • 举报
回复
版主, 俺就是在实际中遇到这个问题才知道这个round不灵光
请看demo

Sub demo()
Dim D1 As Double
Dim D2 As Double
Dim C1 As Currency
Dim C2 As Currency
Debug.Print

D1 = 1.225
D2 = 2.225
Debug.Print Round(D1, 2), Round(D2, 2)

C1 = 1.225
C2 = 2.235
Debug.Print Round(C1, 2), Round(C2, 2)
End Sub

运行结果:
1.23 2.22
1.22 2.24
barretny 2006-06-30
  • 打赏
  • 举报
回复
顶一个学习一下
蓝帆·雨轩 2006-06-30
  • 打赏
  • 举报
回复
To:cuizhq0227(寒青)

所谓的四舍六入指的是“四舍六入五单双法”取舍规则。

了解了,主要是对5的处理。呵呵,知道怎么处理了。
蓝帆·雨轩 2006-06-29
  • 打赏
  • 举报
回复
To:DawnPine(拂晓的松)
1.在实际计算当中不会出现该问题,除非浮点数与实际值不一致时。
2.INT也有您所说的类似问题,呵呵。
蓝帆·雨轩 2006-06-28
  • 打赏
  • 举报
回复
要求四舍六入?那么5就是不变化咯?可以的。
假设要取3位小数,公式如下:
=IF(ROUND(A1,3)=ROUND(A1-0.0001,3),ROUND(A1,3),ROUNDDOWN(A1,4))

结果如下:
输入:0.2454 输出:0.245
输入:0.2455 输出:0.2455
输入:0.2456 输出:0.246
DawnPine 2006-06-28
  • 打赏
  • 举报
回复
用int
不要用round
round有bug

下面是在立即窗口中得到的结果:

?round(1.225,2),round(2.225,2)
1.23 2.22
thoughter 2006-06-24
  • 打赏
  • 举报
回复
上面为公式
VBA的话也差不多
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveCell = Round(1000.23565, 3)
End Sub
结果为1000.236
thoughter 2006-06-24
  • 打赏
  • 举报
回复
=ROUND(A2,3)
不就可以吗?
ChinaOBS 2006-06-24
  • 打赏
  • 举报
回复
round(123.456,2)返回123.46,以数字的形式返回。
fixed(123.456,2)也返回123.46,不过是以文本的形式返回的。

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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