64ビット整数の演算結果

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

64ビット整数の演算結果

#1 投稿記事 by hira »

コード: 全て選択

Dim a As Int64
a=123456789123456
a=a/10000
このとき、「12345678912」となるべきaの値が「12345678848」となってしまいます。
調査をお願いします。

※何故か \ 演算子で割る場合は問題なしです…。もしかしてDouble型の精度が関係しているとか?
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#2 投稿記事 by イグトランス »

こういうときには整数除算演算子 \ を使ってみると良いです。
こちらでは問題ありません。

コード: 全て選択

#prompt
#strict

Dim a As Int64
a = 123456789123456
a = a \ 10000

Print a
というわけで / 演算子では実数型で計算されているのでしょう。

円記号は違和感があるので、私は \ がバックスラッシュになるフォントを使っています。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

#3 投稿記事 by hira »

ありがとうございます。
やはり内部の計算が実数で行われているようですね。
今回は \ 演算子で解決できる内容でしたので、それでいきたいと思います。
返信する