投稿日 | : 2004/06/24(Thu) 19:07 |
投稿者 | : くま |
Eメール | : |
URL | : |
タイトル | : 整数部の桁数を取得する方法 |
こんにちは。早速ですが質問させてください。
VB6.0で,入力した数の整数部の桁数を返すルーチンを考えています。
以下のように書いてみたところ,うまくいかない時があります。
#
Dim d As Double
d = CDbl(Text1.Text)
Text2.Text = Fix(Log(d) / Log(10#)) + 1
#
dに10のべき乗を代入すると,Fix関数の結果が予想される値より
1だけ小さくなってしまいます。
dに10を代入してウォッチしてみると
Log(d) / Log(10#)
の部分には,ちゃんと1が返っています。
しかし,そのとき
Fix(Log(d) / Log(10#))
の結果がなぜか0になってしまいます。
試しにFIX(1)を実行してみましたが,そのときはちゃんと1が返りました。
この違いはどこから来るのでしょうか?
FIX()に渡す引数はdoubleで大丈夫だと思ったのですが…。
実は
Log(10.0) / Log(10#) < 1.0
だったりするのでしょうか。
原因をご存知でしたらご教授ください。
既出だったらごめんなさい。