
就是要略去的那位数是1、2、3、4的时候直接舍弃;是6、7、8、9的时候,舍弃掉,前一位数加1;五成双的意思是当最后一位数为5,而前面是奇数的时候,那就舍弃5,前面数加1,如果是偶数的时候,就直接舍弃,确保舍弃的时候,前一位的数为偶数
可以在excel中建立宏,然后输入以下程序:
Function Roundx(x, n)
y = x 10 ^ n - Int(x 10 ^ n)
z = Int(x 10 ^ n)
If y >= 06 Then
p = (Int(x 10 ^ n) + 1) / 10 ^ n
ElseIf y < 05 Then
p = Int(x 10 ^ n) / 10 ^ n
ElseIf z / 2 = z \ 2 Then
p = Int(x 10 ^ n) / 10 ^ n
ElseIf z / 2 <> z \ 2 Then
p = (Int(x 10 ^ n) + 1) / 10 ^ n
End If
Roundx = p
End Function
当n为正,则为小数点之后,n为负,则小数点之前。
对x进行四舍六入五成双到小数点n位:
Function Roundx(x, n)
y = x 10 ^ n - Int(x 10 ^ n)
z = Int(x 10 ^ n)
If y >= 06 Then
p = (Int(x 10 ^ n) + 1) / 10 ^ n
ElseIf y < 05 Then
p = Int(x 10 ^ n) / 10 ^ n
ElseIf z / 2 = z \ 2 Then
p = Int(x 10 ^ n) / 10 ^ n
ElseIf z / 2 <> z \ 2 Then
p = (Int(x 10 ^ n) + 1) / 10 ^ n
End If
Roundx = p
End Function
当n为正,则为小数点之后,n为负,则小数点之前。
这个函数不是一个四舍五入的函数,实际上是四舍六入的函数,但是当取舍的数字为中间值(即5)的时候他会向相应的偶数方向取舍;所以3135离第二位小数3最近的偶数是4,使用此函数后就变成314,而3145第二位小数本身为偶数,所以直接舍掉5也变成314
最佳解答理论上公式是这样:1保留到个位=IF(A1-INT(A1)05,ROUND(A1,0),IF(MOD(INT(A1),2)=0,INT(A1),ROUND(A1,0)))2保留一位小数=IF(A210-INT(A210)05,ROUND(A210,0),IF(MOD(INT(A210),2)=0,INT(A210),ROUND(A210,0)))/103保留两位小数=IF(A3100-INT(A3100)05,ROUND(A3100,0),IF(MOD(INT(A3100),2)=0,INT(A3100),ROUND(A3100,0)))/100依此类推,但还是要注意验算,因为计算机芯片的浮点运算问题或是EXCEL的运算问题,会造成“五成双”计算错误。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)