如何在vb.net中舍入到最接近的5000。不能使用math.round导致它出错。我正在寻找微软exel中的mround()之类的东西。
Math.round(43333 * 34, 5000)
答案 0 :(得分:3)
尝试
Math.Round(43000 / 5000) * 5000
如:
For Each x In New Single() {2499, 2501, 7000, 21000, 43000, 99000}
Console.WriteLine(String.Format( _
"Rounding {0,7:N0} to the nearest 5,000: {1,7:N0}", _
x, _
Math.Round(x / 5000) * 5000) _
)
Next
Console.ReadKey(True)
输出:
Rounding 2,499 to the nearest 5,000: 0
Rounding 2,501 to the nearest 5,000: 5,000
Rounding 7,000 to the nearest 5,000: 5,000
Rounding 21,000 to the nearest 5,000: 20,000
Rounding 43,000 to the nearest 5,000: 45,000
Rounding 99,000 to the nearest 5,000: 100,000
我将添加Math.Round
的默认舍入行为MidpointRounding.ToEven
,文档描述为“当一个数字介于另外两个之间时,它会向最近的偶数舍入。“这意味着0.5
可以舍入为0
或1
,具体取决于具体情况(处理统计信息时所需的行为)。要更改此行为,您可以将MidpointRounding.AwayFromZero
作为第二个参数传递,该参数的行为与您在学校的教学相同(0.5
始终向1
舍入,-0.5
始终向-1
)。