ページ 11

あってはならないバグを発見(?)

Posted: 2005年11月14日(月) 15:24
by konisi

コード: 全て選択

#N88BASIC
Dim A As Single
Dim B As Double
Dim C
A=5.1
B=5.1
C=5.1
Print A
Print B
Print C
これを実行すると、何故かみんなsingle型の数値としか思えないような悪い値になってしまいます。僕だけでしょうか?

Re: あってはならないバグを発見(?)

Posted: 2005年11月14日(月) 15:45
by Yoshi
[code]#N88BASIC
Dim A As Single
Dim B As Double
Dim C
A=5.1
B=5.1 As Double
C=5.1
Print A
Print B
Print C[/code]
ならうまくいきました。

Posted: 2005年11月14日(月) 15:52
by konisi
あぁ、そうやればいいのか。でも面倒だな・・・。
ついこの前まで大丈夫だと思ったんだけど、代入式にいちいち型を書くのは面倒だから山本さんの対処を望みます。

もうひとつ。

Posted: 2005年11月14日(月) 15:59
by konisi

コード: 全て選択

#N88BASIC
Dim A As Double
A=1/5 As Double
Print A
こうかいても表示されるのは"0.2"ではなく"0"になってしまいます。
ちなみに、5/2をやると2と出ます。自動で切り捨てなんて聞いていませんが。

ちなみに

Posted: 2005年11月14日(月) 16:05
by konisi

コード: 全て選択

#N88BASIC
Dim A As Double
Dim B As Double
Dim C As Double
B=1
C=5
A=B/C As Double
Print A
と書けばちゃんと動きますが余計にメモリ食ってるのが気になります。

Posted: 2005年11月16日(水) 03:41
by 山本
ご報告ありがとうございます。

・Double型のリテラル値がSingle型として扱われてしまうバグを修正。
・実数型に整数型同士のリテラル値の除算を行ったときに、実数演算が行われるように改良。

この2点においては、Ver4.11.01にて修正を行いました。ご確認ください。

こちらの都合で申し訳ないのですが、今回修正を行うついでに、コンパイラ内部のリテラル値演算モジュールを一新しました。リテラル値同士の演算部分について、万が一、不具合を発見された際は、ご一報いただけると助かります。早急に対処しますので・・・