none
数値から文字列変換 RRS feed

  • 質問

  • お世話になります。数値を文字列に変換に関してご教授していただきたいことがあります。

    0.0000001をConvert.Tostringを使用して文字列に変換すると

    "0.00000010"と変換されてしまい困っております。

    "0.0000001”に変換するにはどうすればよいかご教授お願いします。

     

     

     

     

    2011年7月15日 4:33

回答

  • やはりdecimal型だったのですね。であれば、私が紹介したページに載っている対処方法でも大丈夫です。こちらはマイクロソフト社が対処方法として掲載しているものです。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク ペニー 2011年7月18日 7:30
    2011年7月15日 15:18
    モデレータ

すべての返信

  • Double.Tostringメソッドに書式文字列を桁数指定で渡します。例えばこんな感じ。

    0.0000001.ToString("0.0000000")


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2011年7月15日 6:17
    モデレータ
  •     Dim a As Decimal = 0.0000001
        System.Diagnostics.Debug.WriteLine(Convert.ToString(a))
        System.Diagnostics.Debug.WriteLine(a.ToString())
    
    の場合は、どちらも
    0.0000001
    0.0000001
    となりました。
    何型の数値を変換しているのでしょうか。

    2011年7月15日 6:24
  • Dim value As Double = 0.0000001
    MessageBox.Show(value.ToString("f7"))
    MessageBox.Show(value.ToString("0.0000000"))
    
    

    こんな感じで。
    2011年7月15日 6:30
  • 御返答ありがとうございます。

     

    変換する数値なのですが、0.1だったり0.00001と桁数がランダムなのです。

    いろいろ調べたのですが、convert.tostring(変換数値).trimend("0"c)

    みたいなことをしなけないのかなと思いまして・・・

    2011年7月15日 6:38
  • 御返答ありがとうございます。

     

    変換する数値なのですが、0.1だったり0.00001と桁数がランダムなのです。

    いろいろ調べたのですが、convert.tostring(変換数値).trimend("0"c)

    みたいなことをしなけないのかなと思いまして・・・


    だったら書式を小数点以下の最大桁数想定してこんな感じでいいかと。最大桁数9桁想定した場合

    0.0000001.ToString("0.#########") → "0.0000001"
    0.0001.ToString("0.#########") → "0.0001"
    0.1.ToString("0.#########") → "0.1"
    1.0.ToString("0.#########") → "1"


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2011年7月15日 6:46
    モデレータ
  • 以下のようなことでしょうか?

    Decimal.ToString が Version 1.0 と Version 1.1 で異なるのはなぜですか。またどのように対処すればよいですか。
    http://msdn.microsoft.com/ja-jp/netframework/aa569607#Question4

    #上記に載っているサンプルコードは違っていて、ToString("G29")とする必要があります。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年7月15日 7:37
    モデレータ
  • ご返信ありがとうございます。

    Decimal型の数値を文字列変換しようとしています。

    数値は今のところ小数点以下の桁数が確定しておらず困っていました。

    やり方としては、

    パターン①文字変換する数値の小数点の桁数を取得してToString()で書式指定して文字変換

    パターン②文字変換する数値が小数点ならば、convert.tostring(変換数値).trimend("0"c)で文字変換

    小数点以外ならば、convert.tostring(変換数値)で文字変換

     

    となってしまうのでしょうか?



    2011年7月15日 9:05
  • やはりdecimal型だったのですね。であれば、私が紹介したページに載っている対処方法でも大丈夫です。こちらはマイクロソフト社が対処方法として掲載しているものです。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク ペニー 2011年7月18日 7:30
    2011年7月15日 15:18
    モデレータ