3
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.56 ではなく 43.565 --> 43.57 が必要です。しかし、私はまだ他の 43.523 --> 43.52 と 12.65 --> 12.65 をそのまま丸める必要があります。

4

4 に答える 4

7

まず、正確な 10 進数値が問題になる場合は、Decimal代わりに を使用することを検討してくださいDouble。特に、43.565 はそもそもとして正確に表現できるわけではありませんDouble

ただし、「中間点」の動作を指定する場合 (つまり、合理的に切り上げまたは切り捨てが可能な場所)、パラメーターを使用してオーバーロードをMidpointRounding使用します。

Console.WriteLine("{0} --> {1}", value, _
                  Math.Round(value, 2, MidpointRounding.AwayFromZero))
于 2012-08-30T19:50:25.597 に答える
4

以下を使用できます。

Math.Round(value, 2, MidpointRounding.AwayFromZero)

詳細については、を受け入れるMath.Round のオーバーロードをMidpointRounding参照してください。

于 2012-08-30T19:49:05.607 に答える
1

MidpointRoundingパラメータを確認してください。

Math.Round(43.565, 2, MidpointRounding.AwayFromZero)

あなたに43.57を与えるべきです

于 2012-08-30T19:51:14.237 に答える
1

使用する

Math.Round(value, 2, System.MidpointRounding.AwayFromZero)
于 2012-08-30T19:50:07.307 に答える