Module Module1
Public Sub Main()
Dim values() As Double = {43.523, 12.65, 43.565}
For Each value As Double In values
Console.WriteLine("{0} --> {1}", value, Math.Round(value, 2))
Next
Console.ReadLine()
End Sub
End Module
以上代码结果为
43.523 - > 43.52
12.65 - > 12.65
43.565 - > 43.56
我需要43.565 - > 43.57而不是43.565 - > 43.56。 但我仍然需要其他43.523 - > 43.52和12.65 - > 12.65按原样舍入。
答案 0 :(得分:7)
首先,如果您关注精确的十进制值,则应考虑使用Decimal
而不是Double
。特别是,43.565不能完全表示为Double
开头。
但是,如果要指定“中点”的行为(即可以合理地向上或向下舍入的位置),请使用overload with a MidpointRounding
parameter:
Console.WriteLine("{0} --> {1}", value, _
Math.Round(value, 2, MidpointRounding.AwayFromZero))
答案 1 :(得分:4)
您可以使用:
Math.Round(value, 2, MidpointRounding.AwayFromZero)
有关详细信息,请参阅接受MidpointRounding
。{/ p>的overload of Math.Round
答案 2 :(得分:1)
使用
Math.Round(value, 2, System.MidpointRounding.AwayFromZero)
答案 3 :(得分:1)