Joh*_*ohn 3 c# vb.net math bankers-rounding rounding
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
Run Code Online (Sandbox Code Playgroud)
上面的代码结果为
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四舍五入.
首先,如果您关注精确的十进制值,则应考虑使用Decimal
而不是Double
.特别是,43.565并不能完全代表Double
.
但是,如果要指定"中点"的行为(即可以合理地向上或向下舍入的位置),请使用带MidpointRounding
参数的重载:
Console.WriteLine("{0} --> {1}", value, _
Math.Round(value, 2, MidpointRounding.AwayFromZero))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1998 次 |
最近记录: |