VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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
だったりするのでしょうか。

原因をご存知でしたらご教授ください。
既出だったらごめんなさい。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -