【发布时间】:2018-03-16 22:43:28
【问题描述】:
如何将给定数字四舍五入为 0、5 或 9,哪个最接近? 我试过了:
=MROUND(I2,5)-((MOD(MROUND(I2,5),10))=0)
但我也需要零,这只会给我五分和九分。 谢谢
【问题讨论】:
标签: excel google-sheets formulas
如何将给定数字四舍五入为 0、5 或 9,哪个最接近? 我试过了:
=MROUND(I2,5)-((MOD(MROUND(I2,5),10))=0)
但我也需要零,这只会给我五分和九分。 谢谢
【问题讨论】:
标签: excel google-sheets formulas
=1*(ROUNDDOWN(A2/10,0)&INDEX({0,5,9},MATCH(MIN(ABS({0,5,9}-MOD(A2,10))),ABS({0,5,9}-MOD(A2,10)),0)))
将 0 添加到 ROUNDDOWN 以满足 excel,生成以下内容:
【讨论】:
根据我对您晦涩的要求的了解,您需要取最后一个整数和任何小数(因此对于123.456,我们将查看3.456)并将其与此图表进行比较:
If it is: Then it becomes: >= 0 And <2.5 0 >= 2.5 And < 7 5 >= 7 And < 9.5 9 >= 9.5 and < 10 10 (zero rounded up)
Function round059(num As Double)
Dim L As Single, R As Single
L = Int(num / 10) * 10
R = num - L
If R >= 2.5 And R < 7 Then
R = 5
Else
If R >= 7 And R < 9.5 Then
R = 9
Else
If R >= 9.5 Then
R = 10
Else
R = 0
End If
End If
End If
round059 = L + R
End Function
Sub test()
Dim x As Double
For x = -0.1 To 10.1 Step 0.2
Debug.Print " " & x & ":", , round059(x)
Next x
End Sub
-0.1: 0
0.1: 0
0.3: 0
0.5: 0
0.7: 0
0.9: 0
1.1: 0
1.3: 0
1.5: 0
1.7: 0
1.9: 0
2.1: 0
2.3: 0
2.5: 5
2.7: 5
2.9: 5
3.1: 5
3.3: 5
3.5: 5
3.7: 5
3.9: 5
4.1: 5
4.3: 5
4.5: 5
4.7: 5
4.9: 5
5.1: 5
5.3: 5
5.5: 5
5.7: 5
5.9: 5
6.1: 5
6.3: 5
6.5: 5
6.7: 5
6.9: 5
7.1: 9
7.3: 9
7.5: 9
7.7: 9
7.9: 9
8.10000000000001: 9
8.3: 9
8.5: 9
8.7: 9
8.9: 9
9.1: 9
9.3: 9
9.5: 10
9.7: 10
9.9: 10
10.1: 10
【讨论】:
8.10000000000001...我把它留在那里有点希望有人会提到一个修复,因为(虽然不是在这种情况下很重要)我以前处理过它,但不记得是什么原因导致它或如何防止它。与以不同方式处理数据类型有关。