VB6またはVB5で有効数字固定で数値文字列を表示するにはどうすればよいのでしょうか。
例えば有効数字4桁のときは
123456→123400
12.3→12.30
1.2→1.200
0.02→0.02000
としたい。
有効文字数分の「0」を後ろに付けて、有効文字数分頭から抜き取ればいいのでは?
編集 削除>有効文字数分の「0」を後ろに付けて、有効文字数分頭から抜き取ればいいのでは?
単純にやってしまうと
123456→1234
12.3→12.3
1.2→1.20
0.02→0.02
になっちゃいましたが。。。(;;
0 以下か 0 以上かで指数の加減を判断して、10 を底とする指数関数で
順に比較していけば桁数が分かるので、桁数に合わせて Format すれば、
できないことはないと思います。
# オイラの脳みそではその程度しか思いつかん。。。
# 数学のサイトでアルゴリズムを質問したほうがいいんじゃない?(^^;
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
>になっちゃいましたが。。。(;;
あ、本当ですね
よく見返してみると、4桁の定義がわからない・・・
>0.02→0.02000
とか
>VB 標準の有効数字表現だと、指数表記になりますね。
ですよねぇ。ふつーはそっちに行きますよねー。
有効数字というからには、その桁数が分かる方が良いわけで
>123400
これでは結果だけ見ると4桁なのか5桁なのか分からないわけです。
小数点の位置も揃いませんし、
>123456→123400
>12.3→12.30
>1.2→1.200
>0.02→0.02000
という表現自体あまりやらないから、ゴリゴリと自作する必要が
あるんじゃないかなー。
結局これといった方法はないようですね。
という訳で専用モジュールを作りました。
>VB 標準の有効数字表現だと、指数表記になりますね。
>123400
>これでは結果だけ見ると4桁なのか5桁なのか分からないわけです。
>小数点の位置も揃いませんし、
これらは承知の上です。
1.24E+03や2.34E-02よりも1240や0.0234の方が一見して値の大きさを捕らえ易い分かり易いというのが,指数表記を使わない理由です。