[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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)
今のところ桁数は不足していませんが、
もし、そのようなときは利用させていただきたいと思います。
どうもありがとうございました。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.