VBAです。
ちょっと検索したのですが、小数点以下の桁数を取得する簡単な方法が
あるのかどうかイマイチ分かりませんでした。
目的はRoundさせる際の引数として渡したいだけなのですが・・・。
(Roundで良いのかどうかは別のお話ですが、今回はRoundで)
結果的に自作関数になりますが、思い付いた処理は数値を文字列と
して変換し、小数点位置から判断させました。
'vba Option Explicit Sub CATMain() Dim numbers As Variant numbers = Array( _ 1, _ 0.1, _ 0.01, _ 0.001, _ 0.0001 _ ) Dim i As Long Dim decimalPlaces As Long For i = 0 To UBound(numbers) decimalPlaces = get_decimal_places(numbers(i)) Debug.Print numbers(i) & " : " & decimalPlaces Next End Sub '小数点以下の桁数取得 Private Function get_decimal_places( _ ByVal number As Double) _ As Long Dim numStr As String numStr = str(number) Dim decimalPoint As Long decimalPoint = InStr(numStr, ".") If decimalPoint < 1 Then get_decimal_places = 0 Else get_decimal_places = Len(numStr) - decimalPoint End If End Function
結果はこんな感じです。
1 : 0 0.1 : 1 0.01 : 2 0.001 : 3 0.0001 : 4
左が与えられた数値で、右が桁数です。
これで十分じゃないかな。