指数表現をしないようにするには?

解決


カイ  2004-03-09 10:06:39  No: 82507  IP: [192.*.*.*]

VB.net2003で開発しています。

////////////////////////////////
Dim a As Single
Dim b As String

a = 0.00008
b = CStr(a)
/////////////////////////////////

bには、8E-05という値が入ります。
これを、bに0.00008という表現で入れるには
どうすればいいでしょうか?

編集 削除
魔界の仮面弁士  2004-03-09 10:32:01  No: 82508  IP: [192.*.*.*]

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)

編集 削除
カイ  2004-03-09 11:31:46  No: 82509  IP: [192.*.*.*]

魔界の仮面弁士  さん

回答ありがとうございます。
自分の説明不足だったのですが、aには小数点桁数不明の
値が入るのです。
aが0.00008の場合は、 a.ToString("0.00000")でいいのですが、
aは0.001だったり、0.00000001だったりする可能性があるのです。

bには、これらの値を指数表示しないで入れたいのです。
すいませんが、これを実現できる方法がありましたら教えてください・・・

編集 削除
サム  2004-03-09 11:53:15  No: 82510  IP: [192.*.*.*]

値を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
      となるのではないかな?

編集 削除
punto  2004-03-09 13:21:35  No: 82511  IP: [192.*.*.*]

Binary Float の “小数点以下桁数” って何?
実用上はともかく,論理的には不思議な議論だよねぇ….
    Dim d As Variant
で定義して.値を入れるときに
    d = CDec("0.000000001")
とかやるといいかも.

編集 削除
カイ  2004-03-09 13:34:33  No: 82512  IP: [192.*.*.*]

サムさん  puntoさん

回答ありがとうございます。

/////////////////////
Dim a As Single
Dim b As String

a = 0.00000000001
b = CDec(a)
//////////////////////

で、bには0.00000000001が入ってきました。
とりあえずこれでやってみようと思います。

ありがとうございました。

編集 削除
オバQ  2004-03-09 17:07:17  No: 82513  IP: [192.*.*.*]

# 参考までに、 VB6 での話ですが。
# 恐らく VB.NET も同じかな?

CDec(0.000000000000000000000000000000001)
の場合、ゼロになってしまいませんか?

それならば、魔界の仮面弁士さんの方法が良いかと思いますが。

Format(0.000000000000000000000000000000001, _
     "0.0########################################################")

編集 削除