数字の桁数を求める関数

前回のネタを作成中に、数字の桁数を求めたい場面があった。しかし、桁数を直接求める関数は無いようだ。そこで、手っ取り早く作ることにした。
f:id:Infoment:20190622163905p:plain

先ず大前提として、ここでは有効数字の桁数は扱わないことにする。色々と複雑だから。
有効数字 - Wikipedia

それだけなら、数字の文字数を数えれば手っ取り早い。
f:id:Infoment:20190622164907p:plain

ただしこれだと、小数点を含む場合は正しい答えが返ってこない。
f:id:Infoment:20190622165021p:plain

そこで、こんなものを作ってみた。

Function DigitNumber(num As Double) As Long
    Dim i As Long: i = 10
    Dim j As Long: j = 1
        Do
            If num / i < 1 Then
                DigitNumber = j
                Exit Function
            Else
                i = i * 10
                j = j + 1
            End If
        Loop
End Function

作りは至って単純で、10で割って1を下回るようなら、そこが最大桁と判断させている。こんな感じだ。
f:id:Infoment:20190622165342p:plain

ここまでなら、Round関数で丸めれば良いのでは?というご意見もあると思う。
まさにその通りで、ここから先の話から見れば、別にどちらでも構わないお話。
ただ、今日の題名は「数字の桁数を求める関数」としてしまったので、今回は
ここまでとする。

この先何をやりたかったかについては、明日に続きます。

参考まで。