トップ回答者
Single型の桁数を調べる

質問
-
Single型の桁数を表す関数を探しています。
文字型では
Dim i As String
i = abcdefg
i.length で7桁がでますが、これと同じ様にSingle型で一発で桁数がわかるメンバーはありませんか?
Dim s As Single
s = 12345
で5桁を表したいのです。(なお、小数点は数える必要はありません)
それとも一度ToStringして桁数を表すしかないでしょうか?
- 編集済み tsutomu0111 2011年10月7日 0:48
回答
-
プログラミングではなく数学の問題です。中学か高校で習うと思います。
Math.Log10(1) → 0
Math.Log10(10) → 1
Math.Log10(100) → 2
Math.Log10(1000) → 3
Math.Log10(10000) → 4
Math.Log10(12345) → 4.09149109426795...あとは1足して整数化するだけです。
- 回答の候補に設定 AzuleanMVP, Moderator 2011年10月7日 9:06
- 回答としてマーク 山本春海 2011年11月16日 7:50
-
そのようなメンバーはありませんが、もしどうしてもメソッドやプロパティのように簡潔に桁数を取得したいなら、拡張メソッドを自作するのも手です。例えばこんなメソッドを用意して・・・
Public Module SingleExtension <System.Runtime.CompilerServices.Extension()> _ Public Function Length(value As Single) As Integer Return value.ToString().Length End Function End Module
こう使います。Dim i As Single = 4500000 Dim len = i.Length() ' len = 7
ただし拡張メソッドの使い過ぎには注意してください。
ひらぽん http://d.hatena.ne.jp/hilapon/- 編集済み ひらぽんModerator 2011年10月7日 1:40 改行を追加
- 回答としてマーク tsutomu0111 2011年10月7日 3:48
すべての返信
-
そのようなメンバーはありませんが、もしどうしてもメソッドやプロパティのように簡潔に桁数を取得したいなら、拡張メソッドを自作するのも手です。例えばこんなメソッドを用意して・・・
Public Module SingleExtension <System.Runtime.CompilerServices.Extension()> _ Public Function Length(value As Single) As Integer Return value.ToString().Length End Function End Module
こう使います。Dim i As Single = 4500000 Dim len = i.Length() ' len = 7
ただし拡張メソッドの使い過ぎには注意してください。
ひらぽん http://d.hatena.ne.jp/hilapon/- 編集済み ひらぽんModerator 2011年10月7日 1:40 改行を追加
- 回答としてマーク tsutomu0111 2011年10月7日 3:48
-
プログラミングではなく数学の問題です。中学か高校で習うと思います。
Math.Log10(1) → 0
Math.Log10(10) → 1
Math.Log10(100) → 2
Math.Log10(1000) → 3
Math.Log10(10000) → 4
Math.Log10(12345) → 4.09149109426795...あとは1足して整数化するだけです。
- 回答の候補に設定 AzuleanMVP, Moderator 2011年10月7日 9:06
- 回答としてマーク 山本春海 2011年11月16日 7:50