首页 > 解决方案 > 舍入数字:如果数字更接近 100,则向下舍入到最接近的 250,否则向上舍入到最接近的 250

问题描述

我正在为整个整数做一个舍入代码。它已经在努力四舍五入到最近的250.

Math.round(FormatNumber(CType(txt_input.Text, Decimal), 0) / 250) * 250

然而,这不是我需要的。相反,我需要相应地向上/向下舍入:
如果 number 小于100,我需要向下舍入到最近的250else 向上舍入到最近的250

例子:

17541 = 17500 
2101  = 2250
7499  = 7500
7099  = 7000 

我应该如何使用Math.Floor()Math.Ceiling()相应地使用应用程序?

标签: vb.netrounding

解决方案


你可以检查是否N Mod 250< 100.
如果是,则减去余数,否则加上250减去余数:

Dim n1 As Integer = 17541
Dim roundToValue As Integer = 250

Dim n1Remainder As Integer = n1 Mod roundToValue
Dim n2 As Integer = If(n1Remainder < 100, n1 - n1Remainder, n1 - n1Remainder + roundToValue)
'Or
'Dim n2 As Integer = (n1 - n1Remainder) + If(n1Remainder < 100, 0, roundToValue)

2101  -> 2250
7499  -> 7500
17541 -> 17500

推荐阅读