VB.net2003で開発しています。
////////////////////////////////
Dim a As Single
Dim b As String
a = 0.00008
b = CStr(a)
/////////////////////////////////
bには、8E-05という値が入ります。
これを、bに0.00008という表現で入れるには
どうすればいいでしょうか?
CStr型変換関数ではなく、書式を指定可能なメソッドを使ってください。
例えば、ToStringメソッドやString.Formatメソッド、あるいは
Microsoft.VisualBasic.Strings.Formatメソッドなどです。
VBのヘルプで、これらの書式について調べてみてください。
Dim a As Single = 0.00008F
Dim b As String = a.ToString("0.00000")
Dim c As String = String.Format("{0:0.00000}", a)
魔界の仮面弁士 さん
回答ありがとうございます。
自分の説明不足だったのですが、aには小数点桁数不明の
値が入るのです。
aが0.00008の場合は、 a.ToString("0.00000")でいいのですが、
aは0.001だったり、0.00000001だったりする可能性があるのです。
bには、これらの値を指数表示しないで入れたいのです。
すいませんが、これを実現できる方法がありましたら教えてください・・・
値をIF文で判定して、最適なフォマット文の表現を使ったら?
dim value as duble
dim f1,f2,f1,……fx ,valstring as string
f1=”{0:0.000000}”
f2=”{0:00.00000}”
f3=”{0:000.0000}”
・・・・・・・
fX=f1
If Value>1000.0 then
fx=f4
else if Value>100.0 then
fx=f3
else if vaue>10.then
fx=f2
end if
StringVal = String.Format(fx,value)
これで厄介なのは
例えば キッチリ4の場合で 4または4.くらいの表示を欲しい場合に
4.000000
となるのではないかな?
Binary Float の “小数点以下桁数” って何?
実用上はともかく,論理的には不思議な議論だよねぇ….
Dim d As Variant
で定義して.値を入れるときに
d = CDec("0.000000001")
とかやるといいかも.
サムさん puntoさん
回答ありがとうございます。
/////////////////////
Dim a As Single
Dim b As String
a = 0.00000000001
b = CDec(a)
//////////////////////
で、bには0.00000000001が入ってきました。
とりあえずこれでやってみようと思います。
ありがとうございました。
# 参考までに、 VB6 での話ですが。
# 恐らく VB.NET も同じかな?
CDec(0.000000000000000000000000000000001)
の場合、ゼロになってしまいませんか?
それならば、魔界の仮面弁士さんの方法が良いかと思いますが。
Format(0.000000000000000000000000000000001, _
"0.0########################################################")