[[20100524135956]] 『JIS丸めの結果について』(ぷしん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『JIS丸めの結果について』(ぷしん)

JIS丸め(偶数丸め)を行いたいのですが、
VBのroundを使用すれば、適用されるとのことで
他の方を参考に見よう見まねでVBAに以下を追加しました。

Public Function JISROUND(ByVal 数値 As Double, ByVal 桁 As Integer) As Double

 JISROUND = Round(数値, 桁)

End Function

それで、例としまして

0.575を小数点以下2桁にJIS丸めをしたいので、
=JISROUND(0.575,2)としますと、
結果 0.58 になるはずだと思うのですが、なぜか0.57になってしまいます。

なにか根本的に間違っているのでしょうか?

excel2003 os:xp


 数値をDoubleでとっているため10進→2進の演算誤差が影響しているかと。

 整数部が15桁、小数部が4桁に制限されますが

 Public Function JISROUND(ByVal 数値 As Currency, ByVal 桁 As Integer) As Currency 
     JISROUND = Round(数値, 桁)
 End Function 
 としてみてはどうでしょうか?
 (独覚)

独覚さま ありがとうございます

おかげさまで、正しく結果が反映されるようになりました。

本当に助かりました。


 独覚さんのに同じ考え方ですが、下のようにするとある程度の桁数にも耐えられるかな?

  Public Function JISROUND(ByVal 数値 As Double, ByVal 桁 As Integer) As Double
  Dim buf As Single
  buf = 数値 * 10 ^ 桁
  JISROUND = Round(buf) / 10 ^ 桁
  End Function

 (momo)

momoさまありがとうございます

今のところ桁数は不足していませんが、
もし、そのようなときは利用させていただきたいと思います。

どうもありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.