none
Single型の桁数を調べる RRS feed

  • 質問

  • Single型の桁数を表す関数を探しています。

    文字型では

    Dim i As String

    i = abcdefg

    i.length で7桁がでますが、これと同じ様にSingle型で一発で桁数がわかるメンバーはありませんか?

    Dim s As Single

    s = 12345

    で5桁を表したいのです。(なお、小数点は数える必要はありません)

    それとも一度ToStringして桁数を表すしかないでしょうか?



    2011年10月7日 0:44

回答

  • プログラミングではなく数学の問題です。中学か高校で習うと思います。

    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足して整数化するだけです。

    2011年10月7日 1:54
  • そのようなメンバーはありませんが、もしどうしてもメソッドやプロパティのように簡潔に桁数を取得したいなら、拡張メソッドを自作するのも手です。例えばこんなメソッドを用意して・・・
    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/

    2011年10月7日 1:20
    モデレータ

すべての返信

  • そのようなメンバーはありませんが、もしどうしてもメソッドやプロパティのように簡潔に桁数を取得したいなら、拡張メソッドを自作するのも手です。例えばこんなメソッドを用意して・・・
    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/

    2011年10月7日 1:20
    モデレータ
  • ありがとうございました。

    結局一度ToStringに変換してから桁数をだそうと思います。

    2011年10月7日 1:25
  • プログラミングではなく数学の問題です。中学か高校で習うと思います。

    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足して整数化するだけです。

    2011年10月7日 1:54
  • ありがとうございました。
    2011年10月7日 3:48