舍入到最近的5000

时间:2012-10-15 21:41:03

标签: vb.net

如何在vb.net中舍入到最接近的5000。不能使用math.round导致它出错。我正在寻找微软exel中的mround()之类的东西。

  Math.round(43333 * 34, 5000)

1 个答案:

答案 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可以舍入为01,具体取决于具体情况(处理统计信息时所需的行为)。要更改此行为,您可以将MidpointRounding.AwayFromZero作为第二个参数传递,该参数的行为与您在学校的教学相同(0.5始终向1舍入,-0.5始终向-1)。