どんな質問もばかげた質問ではないということわざに頼るつもりですが、少しばかげた質問があります。
編集:
重複を検索するときに出くわしなかったタイトルを使用していますが、この質問はここですでに数回尋ねられ、回答されているようです。関連する投稿は次のとおりです。
- 科学表記法を使用しない double から文字列への変換
- double を 10 の累乗表現なしで string に変換する方法 (E-05)
- 答えのある場所 (Jon Skeet): http://www.yoda.arachsys.com/csharp/DoubleConverter.cs
元の質問:
などのかなり小さい数値を時々保存するアプリがあり0.000023425
ます。TextBox
これらの数値は、ユーザーが編集できるようにコントロールに読み込まれます。次の不自然な例は、私の問題を示しています。
Dim number As Double = 0.000023425
someTextBox.Text = number.ToString() ' Shows "2.3425E-05"
前述のように、表示されるテキストは です2.3425E-05
。これは、ユーザーにとって直感的に理解できるものではありません。さらに、より正確な数値 (小数点以下 19 桁まで) を使用しています。出力を固定小数点にしたい。もちろん、私は簡単かつきれいに行うことができます:
number.ToString("F20") ' Shows "0.00002342500000000000"
しかし、その後、厄介な数のゼロが残ります。したがって、それを修正するには、次のようにします。
number.ToString("#,##0.####################") ' Shows "0.000023425"
これは私が欲しいものですが、その巨大な醜いフォーマット文字列をそこに置くよりも良い方法はありますか? わかりました、それほど醜いわけではありませんが、確かに別の方法がありますよね? 私の目標は、DB に保存されている生の値をわかりやすい方法で表示することであり、数値の形式を強制する必要はまったくありません。
ありがとう!
アップデート
たぶん、私は投稿で少し言いすぎました。Decimal
いくつかの実験の後、基になるデータ型を変更して問題を解決することがわかりました。
Dim number As Decimal = 0.000023425
someTextBox.Text = number.ToString() ' Shows "0.000023425" instead of "2.3425E-05"
Double
s が正常に表示されるほど正確ではないようですね。
編集
Double 値を Decimal としてキャストしてから aを実行するだけで、望ましい効果が得られる投稿を見つけました(賛成票はありませんが)。.ToString()
私がそれをしたくない理由はありますか?おそらく、へのキャストは(無視できる量ですが)Decimal
とは異なる値で終了する可能性があるため、おそらくフォーマット文字列の方が安全です。Double
#,##0.#################...