Excel VBAのバンカー丸め関数が小数点以下の桁数に応じて異なる結果をもたらすのはなぜですか?

そこに

このフォーラムの他の場所で見つけたこの便利なコードを使用して、スプレッドシートでVBA Round()関数を使用しようとしています。

Function BankerRound(rng As Double, sig As Integer) As Double
    BankerRound = Round(rng, sig)
End Function

しかし、私はこれらの結果に驚いています(すべて小数点以下2桁を使用しています)

1233.71537501667 rounds to 1233.72
1233.715 rounds to 1233.71

結果が異なる理由を誰かが説明できますか?

ロンローゼンフェルド

丸めアルゴリズムは、「中間」の場合の処理​​方法が異なります。詳細については、ウィキペディアのディスカッションを参照してください。

いわゆるBankers Rounding(銀行家が使用しているとは思わない)に関しては、アルゴリズムは最も近い偶数に丸めることを要求します。

したがって、1233.715の特定の例は1233.72に丸められるはずです。これは、123.715が123.72に丸められるのとほぼ同じ方法です。

そうでない理由は、おそらくMSVBAがIEEE仕様に正確に準拠して表現できない10進値を処理する方法にあると思います。ほとんどの場合、内部に格納されている値の10進表現は次のようなものです。1233.71499999...

これが重要な場合は、浮動小数点バイナリではなく整数として格納されるDecimalデータ型を使用して目的の値を取得できるはずです。

例えば:

Function bankerRound(num As Variant, numDecimals As Long)
    bankerRound = Round(CDec(num), numDecimals)
End Function

さらに明確にするために(?混乱?)、以下の結果を調べてください。

vbaRound関数は、ダブルデータ型を使用しています

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Excelが小数点以下2桁を超える数値を整数として解析するのはなぜですか?

分類Dev

形式が数値と小数点以下 2 桁に設定されている場合に、Excel が数値を丸めないようにするにはどうすればよいですか?

分類Dev

小数点以下の桁数がゼロで終わることを示すためにExcel列をフォーマットするVB

分類Dev

Excelで列を中央揃えにし、小数点を揃えて、各数値に必要な小数点以下の桁数のみを表示するにはどうすればよいですか?

分類Dev

Excelセルの値に複数の小数点があるのはなぜですか?

分類Dev

Excelのテキストからコンマと小数点以下の桁数を抽出する方法

分類Dev

MS Excelで、小数点以下の桁数を動的に設定するにはどうすればよいですか?

分類Dev

Excel-別のインスタンスにコピーすると小数点以下の桁数が削除されます

分類Dev

データに基づいてExcelリストの小数点以下の桁数を自動的に決定しますか?

分類Dev

Excelでの小数点以下の桁数の問題

分類Dev

VBAのExcelソルバーは、ソルバーを手動で実行する場合とは異なる結果をもたらします

分類Dev

小数点以下の桁数に応じて丸めます

分類Dev

Excelワークボードの小数点以下の桁数を制限します(特定のセルではありません)

分類Dev

MySQLが小数点以下2桁の除算を例外のない値に丸めるのはなぜですか?

分類Dev

かみそりが自動的に小数点以下2桁に丸められるのはなぜですか?

分類Dev

Rデータフレームの同じ列内の異なる小数点以下の桁数に値を丸めたいのですが、それは可能ですか?

分類Dev

Excel グラフの小数点以下桁数変数

分類Dev

ScipyのpercentileofscoreがExcelのPERCENTRANK.INCとは異なる結果を返すのはなぜですか?

分類Dev

Excel Macros 2013:ショートカットキーを使用して、入力値を整数と小数点以下2桁の間でフォーマットするマクロを作成することは可能ですか?

分類Dev

Firebirdが除算時に小数点以下の桁数を切り捨てるのはなぜですか?

分類Dev

Excelがこれら2つの同じ外観のセルを異なるものとして扱うのはなぜですか?

分類Dev

Excelの数値形式では、整数に小数点が追加されます

分類Dev

Microsoft Excel for Macintosh 2011で浮動小数点の丸め誤差を修正するにはどうすればよいですか?

分類Dev

丸め時に小数点以下に指定した桁数がPythonに含まれないのはなぜですか?

分類Dev

Excelの数式、常に右側に2つの小数点以下の値を含める

分類Dev

Excelで小数点以下の文字を削除

分類Dev

誰かがこのerlang関数を説明して、数値を特定の小数点以下の桁数に丸めることができますか?

分類Dev

Javaを使用して結果セットに異なるデータがあるにもかかわらず、Excelのすべての行に同じデータが挿入される

分類Dev

AccessデータベースのVBAを介して複数のExcelブックを開いたり閉じたりすると、エラー91が発生することがあるのはなぜですか。

Related 関連記事

  1. 1

    Excelが小数点以下2桁を超える数値を整数として解析するのはなぜですか?

  2. 2

    形式が数値と小数点以下 2 桁に設定されている場合に、Excel が数値を丸めないようにするにはどうすればよいですか?

  3. 3

    小数点以下の桁数がゼロで終わることを示すためにExcel列をフォーマットするVB

  4. 4

    Excelで列を中央揃えにし、小数点を揃えて、各数値に必要な小数点以下の桁数のみを表示するにはどうすればよいですか?

  5. 5

    Excelセルの値に複数の小数点があるのはなぜですか?

  6. 6

    Excelのテキストからコンマと小数点以下の桁数を抽出する方法

  7. 7

    MS Excelで、小数点以下の桁数を動的に設定するにはどうすればよいですか?

  8. 8

    Excel-別のインスタンスにコピーすると小数点以下の桁数が削除されます

  9. 9

    データに基づいてExcelリストの小数点以下の桁数を自動的に決定しますか?

  10. 10

    Excelでの小数点以下の桁数の問題

  11. 11

    VBAのExcelソルバーは、ソルバーを手動で実行する場合とは異なる結果をもたらします

  12. 12

    小数点以下の桁数に応じて丸めます

  13. 13

    Excelワークボードの小数点以下の桁数を制限します(特定のセルではありません)

  14. 14

    MySQLが小数点以下2桁の除算を例外のない値に丸めるのはなぜですか?

  15. 15

    かみそりが自動的に小数点以下2桁に丸められるのはなぜですか?

  16. 16

    Rデータフレームの同じ列内の異なる小数点以下の桁数に値を丸めたいのですが、それは可能ですか?

  17. 17

    Excel グラフの小数点以下桁数変数

  18. 18

    ScipyのpercentileofscoreがExcelのPERCENTRANK.INCとは異なる結果を返すのはなぜですか?

  19. 19

    Excel Macros 2013:ショートカットキーを使用して、入力値を整数と小数点以下2桁の間でフォーマットするマクロを作成することは可能ですか?

  20. 20

    Firebirdが除算時に小数点以下の桁数を切り捨てるのはなぜですか?

  21. 21

    Excelがこれら2つの同じ外観のセルを異なるものとして扱うのはなぜですか?

  22. 22

    Excelの数値形式では、整数に小数点が追加されます

  23. 23

    Microsoft Excel for Macintosh 2011で浮動小数点の丸め誤差を修正するにはどうすればよいですか?

  24. 24

    丸め時に小数点以下に指定した桁数がPythonに含まれないのはなぜですか?

  25. 25

    Excelの数式、常に右側に2つの小数点以下の値を含める

  26. 26

    Excelで小数点以下の文字を削除

  27. 27

    誰かがこのerlang関数を説明して、数値を特定の小数点以下の桁数に丸めることができますか?

  28. 28

    Javaを使用して結果セットに異なるデータがあるにもかかわらず、Excelのすべての行に同じデータが挿入される

  29. 29

    AccessデータベースのVBAを介して複数のExcelブックを開いたり閉じたりすると、エラー91が発生することがあるのはなぜですか。

ホットタグ

アーカイブ