vb.net - 舍入数字 : if number is closer to 100, 向下舍入到最接近的 250,否则向上舍入到最接近的 250

标签 vb.net rounding

我正在对整个整数进行舍入代码。它已经开始四舍五入到最接近的 250

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

但这不是我需要的。相反,我需要相应地向上/向下舍入:
如果数字小于 100,我需要向下舍入到最接近的 250,否则向上舍入到最近的 250

示例:

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

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

最佳答案

您可以检查是否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

关于vb.net - 舍入数字 : if number is closer to 100, 向下舍入到最接近的 250,否则向上舍入到最接近的 250,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429266/

相关文章:

c - 如何在 C 语言中正确舍入 double ?

c# - .NET 中的 "Debug.Print"和 "Console.WriteLine"有什么区别?

vb.net - 未定义用户控件类型

c++ - 几何舍入问题 : object no longer convex after simple transformations

java - 点后面第 16 个元素发生意外舍入

java - Java 中的运费计算器,得出错误的数字

MySql EF Code First 迁移 VB.NET

mysql - 关闭连接后访问MySQL

c# - LINQ - 在元素中获取元素

Python:四舍五入到最接近的 1/8%