有効数字固定の表記

解決


若葉印  2008-01-08 11:14:22  No: 100031  IP: 192.*.*.*

VB6またはVB5で有効数字固定で数値文字列を表示するにはどうすればよいのでしょうか。

例えば有効数字4桁のときは
123456→123400
12.3→12.30
1.2→1.200
0.02→0.02000
としたい。

編集 削除
通ってみた  2008-01-08 19:12:32  No: 100032  IP: 192.*.*.*

有効文字数分の「0」を後ろに付けて、有効文字数分頭から抜き取ればいいのでは?

編集 削除
特攻隊長まるるう  2008-01-09 09:42:17  No: 100033  IP: 192.*.*.*

>有効文字数分の「0」を後ろに付けて、有効文字数分頭から抜き取ればいいのでは?
単純にやってしまうと
123456→1234
12.3→12.3
1.2→1.20
0.02→0.02
になっちゃいましたが。。。(;;

0 以下か 0 以上かで指数の加減を判断して、10 を底とする指数関数で
順に比較していけば桁数が分かるので、桁数に合わせて Format すれば、
できないことはないと思います。

# オイラの脳みそではその程度しか思いつかん。。。
# 数学のサイトでアルゴリズムを質問したほうがいいんじゃない?(^^;

編集 削除
魔界の仮面弁士  2008-01-09 09:50:36  No: 100034  IP: 192.*.*.*

VB 標準の有効数字表現だと、指数表記になりますね。

Debug.Print Format(123456, "0.000E-0")
Debug.Print Format(12.3, "0.000E-0")
Debug.Print Format(1.2, "0.000E-0")
Debug.Print Format(0.02, "0.000E-0")

1.235E5
1.230E1
1.200E0
2.000E-2

編集 削除
通ってみた  2008-01-09 09:54:17  No: 100035  IP: 192.*.*.*

>になっちゃいましたが。。。(;;

あ、本当ですね
よく見返してみると、4桁の定義がわからない・・・

>0.02→0.02000

とか

編集 削除
特攻隊長まるるう  2008-01-09 10:11:15  No: 100036  IP: 192.*.*.*

>VB 標準の有効数字表現だと、指数表記になりますね。
ですよねぇ。ふつーはそっちに行きますよねー。

有効数字というからには、その桁数が分かる方が良いわけで
>123400
これでは結果だけ見ると4桁なのか5桁なのか分からないわけです。
小数点の位置も揃いませんし、
>123456→123400
>12.3→12.30
>1.2→1.200
>0.02→0.02000
という表現自体あまりやらないから、ゴリゴリと自作する必要が
あるんじゃないかなー。

編集 削除
若葉印  2008-01-09 15:07:00  No: 100037  IP: 192.*.*.*

結局これといった方法はないようですね。
という訳で専用モジュールを作りました。

>VB 標準の有効数字表現だと、指数表記になりますね。
>123400
>これでは結果だけ見ると4桁なのか5桁なのか分からないわけです。
>小数点の位置も揃いませんし、
これらは承知の上です。
1.24E+03や2.34E-02よりも1240や0.0234の方が一見して値の大きさを捕らえ易い分かり易いというのが,指数表記を使わない理由です。

編集 削除