FC2ブログ

四捨五入・切上げ・切捨てについて

四捨五入・切上げ・切捨て

四捨五入については,よくさまざまな議論がされていますが,単純に
「4より小さければ切り捨て」,「5より大きければ切り上げ」したい場合,
標準のRound関数では実現できません。(銀行型四捨五入と言われている「最近接偶数丸め」だからかな?)
なので,自分で関数を作成する必要があります。
以下はその例です。ついでに切上げ・切り捨ても付けてみました。


'==============================================================================
'
' 四捨五入・切上げ・切捨て関連
'
'==============================================================================




'---------------------------------------------------
' 利用方法(以下必要に応じてプロシージャに貼り付けて下さい。)
'---------------------------------------------------

''==============================================================================
'
' 四捨五入(切上げ, 切捨て)
'
'
' ------------------------------------------------------------------------
' 説明 : 四捨五入(切上げ, 切捨て)をする
'
' ------------------------------------------------------------------------
' 引数 : sValue 四捨五入(切上げ, 切捨て)をする値
'    : iMode 0:四捨五入, 1:切上げ, 2:切捨て
'    : iKeta 四捨五入(切上げ, 切捨て)をする位(第n位)
' 戻値 : Double 計算結果
'
'==============================================================================

Public Function fnc_Round_Value(sValue As Variant, iMode As Integer, iKeta As Integer) As Double
Dim dWkValue As Double

  '---戻り値初期化
    fnc_Round_Value = 0


  '---値チェック
    If Not IsNumeric(sValue) Then
      Exit Function
    End If


  '---計算
    Select Case iMode
      Case 0
        '四捨五入
        dWkValue = Int((sValue * (10 ^ (iKeta - 1)) + 0.5)) / (10 ^ (iKeta - 1))

      Case 1
        '切上げ
        dWkValue = Int((sValue * (10 ^ (iKeta - 1)) + 0.9)) / (10 ^ (iKeta - 1))

      Case 2
        '切捨て
        dWkValue = Int((sValue * (10 ^ (iKeta - 1)))) / (10 ^ (iKeta - 1))

    End Select


  '---戻り値設定
    fnc_Round_Value = dWkValue

End Function



【宣伝・・・(*´ω`)】

タイトルロゴ3

 システム葵では、個人様向けでも企業様向けでも、パソコン修理から、パソコン設定、パソコンの使い方、LAN環境構築、ソフトウェア開発まで、様々な実績がありますので、困ったことがあれば、お気軽にご相談下さい。
関連記事

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

検索フォーム
最新記事
カテゴリ
全記事表示リンク

全ての記事を表示する

最新コメント
プロフィール

ITLife

Author:ITLife
システム葵新井聡太です。
東京都東村山市に生まれ、ここで育ち、ここで結婚し、システムエンジニア一筋で十数年やってきました。
ここでは主に、パソコンを中心にITに関わることを備忘録として残していきたいと思います。
少しでも来ていただいた方のお役に立てたら幸いです。
m(_ _)m

p.s
ここで紹介している内容は一例です。すべては、自己責任でお願いします。

カレンダー
07 | 2019/08 | 09
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
訪問数
月別アーカイブ
リンク