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

投稿日: 2005/05/22(Sun) 17:02
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe:

# 以下は、スレッドの本題とは無関係なので、読まなくてもOKです。(^^;


>  これは、VBのバグだと思っています。
「思っている」という表現ならば、特に反論はありません。(^-^)

個人的には、「○○のような理由から、Intのバグだと思われる」とか、
「△△なので、それは浮動小数点の誤差の範囲内ではないか」といった
『考察』は望んでいますが、現時点ではまだ『結論』を出せる段階では無いと思うのです。

# 個人的には、こういう調査/考察ネタは大好きなのですが、もしも
# 管理人さんが、こういうスレッドを望まないなら、これ以上の考察は止めておきます。


> マイクロソフトが障害だと認定するかどうかは関係ないです。
> 自分が、バグだと思えばバグだと言います。
「バグだ」とMSに伝えるのであれば、それは良いことだと思います。が、
その事実を確認する前に、コミュニティでバグだと断定するような発言を
するのは、(たとえ本当にバグだとしても)止めたほうが良いとも思っています。

MSが認定したかどうかが、あなたには関係無いのと同様、第三者が尚早にバグと
認定したとしても、本当の製品障害かどうかとは関係無い事になってしまうからです。

それよりもむしろ、この事実をMSに伝えて、最終的には「MSに障害だと認めさせる」
ように働きかけた方が建設的ですよね。なので、障害と認めさせる根拠を得るために
(あるいは、仕様として納得できる根拠を聞きだすために)も、再現する人たちから
詳しい環境等をお聞きして、当方でもそれを確認したいと思っています。
(ある程度なら、当方でも複数の実験環境を用意する事ができますし)


> 確か、VB4.0のころは10進型はなかったと記憶しています。
あぁ、そういえばそうでしたね。
正確には「なかった」というより、「サポートしていなかった」ですけれども。

# 実際、VB4でも『Debug.Print VarType(10進型の値)』は 14 を返しますが、
# 「Debug.Print 10進型の値 / 10進型の値」は、サポート外としてエラー458が返されます。
## この辺りは、今回の話からは外れますので、どうでも良い事ですけど。


>  VB6.0では、通貨型同士の除算は、結果は10進型になるとおもいます。
『Debug.Print TypeName(10@ / 1@)』は、「Double」を返しませんか?
少なくとも当方では、VB6 でも Office 2003 VBA でも Double になりますが……。


> (ヘルプのキーワード 「/ (演算子)」)
それは、下記のトピックの事かと思いましたが…具体的にはどの部分でしょうか。
hhttp://www.microsoft.com/JAPAN/developer/library/Vbenlr98/vaoprdivide.htm


> 今回は、281と282を返す場合があり、それがバグだといっているのです。
なるほど。Starfishさんのスタンスはわかりました。

一方、私の方の考えを述べると、本当にバグならばその根拠を示したいと
思っていますし、仕様だとしてもその具体的な理由を知りたいと考えています。
(その根拠を調査するのは、MSでも第三者でも誰でも構わないとは思いますが)

しかし現状では、「1回目と2回目の計算結果が異なると言う問題」の責任さえ、
Int関数にあるのか、それともInt関数に渡す前の計算時点で異なっているのか、
そして、特定の環境だけで起きるのか、といった問題が何一つ切り分けられていないので、
現時点では「Intのバグだ」「仕様だ」などと断定する事はできないな、と思っています。

# たとえば下記では、CDate("01/02 03:04:05") を実行した時に、特定の環境で
# プログラムが異常終了してしまうという問題を取り上げています。
#    [文字列からDate型への変換に注意する]
#    hhttp://www.gj.il24.net/~nakasima/vb/trap/index.htm#VBTRAP19
# このURLに示した例を、CDate関数のバグだ! と言ってしまうのは簡単ですが、
# 実際には IsDateには非は無く、これは OLE側のDLLに問題があったわけです。
## 今回の件も同様で、事実を完全に確認しないまま、「Intのバグだ」
##「浮動小数点型の仕様だ」と断定するような事はしたくないと思ったのです。
## 断定してしまうと、そこから先の考察を止めてしまいますから、本当に問題が
## そこにあったのかどうか、わからなくなってしまいそうで……。


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

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

- VBレスキュー(花ちゃん) - - Web Forum -