1

Excelでの丸めについてよく読んだことがあります。Application.WorksheetFunction.Round() は多かれ少なかれ「通常の」丸めを使用しているのに対し、VBA の Round() 関数は「バンカーの丸め」を使用していることがわかりました。しかし、これは私がこれを理解するのに役立ちませんでした:

? Round(6.03499,2)
 6.03 

なんで?6.03 ではなく 6.04 を見たい! トリックはそれです

? Round(Round(6.03499,3),2)
 6.04

少し考えて、次のようなサブルーチンを開発しました。

Option Explicit
Function DoRound(ByVal value As Double, Optional ByVal numdigits As Integer = 0) As Double
   Dim i As Integer
   Dim res As Double
   res = value
   For i = 10 To numdigits Step -1
       res = Application.Round(res, i)
   Next i
   DoRound = res
End Function

それは正常に動作します。

? DoRound(6.03499,2)
  6.04

しかし、それはクールではありません。Excelに組み込みの通常の丸めはありますか?

4

2 に答える 2

3

6.034993 桁に丸めると、6.035正しいです。
2桁に四捨五入6.03499すると、6.03 これは正しいです

ただし、最初に 3 桁に丸め、次に 2 に
Round(6.03499, 3)丸める例も、次のステートメントで正しいです。
Round(6.035, 2)

Round(6.03499, 2)6.04を提供したい場合は、使用する必要がありますApplication.WorksheetFunction.RoundUp

于 2013-08-27T08:04:21.380 に答える
1

6.0349 を小数点以下 2 桁に丸めるのは 6.04 ではありません。したがって、いいえ、そのような機能はありません。切り上げは何でも切り上げます。したがって、小数点以下を 0 に丸めると、6.0000000001 も 7 になります。

于 2013-08-27T08:01:14.580 に答える