ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 21:54

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - 64bit変数の計算結果がおかしい
作成者 メッセージ
  記事の件名:   引用付きで返信する
今更気付いたのですが,これは単にキャストすれば良かっただけのような気がします。
コード:
Dim value As Int64
Dim i As Long
For i = 0 To 18
    value = (10 ^ i) As Int64 - 1
    debug
Next
投稿記事 Posted: 2006年12月07日(木) 23:32
  記事の件名:   引用付きで返信する
わざわざコードまでありがとうございます。
これを使うかはまだわからないですが、参考にさせていただきます。こちらでもいい方法を模索したいと思います。
投稿記事 Posted: 2006年12月02日(土) 00:09
  記事の件名:   引用付きで返信する
試しにOLEオートメーションのVARIANT型(内部形式:Decimal(十進小数)型)に変換し,VARIANT型の演算関数で行わせたところ正しい結果にさせることができました。
ただし,これはもはや64ビット演算ではありません。
VARIANT型はメンバ変数vtに現在保持しているデータ型を格納し,llValの部分(実際には共用体)に実際のデータを格納すると言う形式です。

また十進型はVBA 6のリファレンスで次のように説明されている型です。
引用:
10 進型 (Decimal)
10 の累乗の指数によって算出される、10 進数を格納するデータ型。小数点以下の桁数が 0 の場合 (小数部分を持たない場合)、絶対値の最大値は 79,228,162,514,264,337,593,543,950,335 です。小数点以下 28 桁の場合、絶対値の最大値は 7.9228162514264337593543950335 です。10 進型 (Decimal) で表される絶対値の最小値は、0 を除いた場合、0.0000000000000000000000000001 です。
投稿記事 Posted: 2006年12月02日(土) 00:00
  記事の件名:   引用付きで返信する
^演算子の実体は,basic/function.sbpにあるpow関数ではないでしょうか?
そうだとすれば,Double型で演算されて情報落ちになっているのだと思います。
投稿記事 Posted: 2006年12月01日(金) 16:59
  記事の件名:  64bit変数の計算結果がおかしい  引用付きで返信する
64bit変数において、次のような計算をすると、なぜか10^16あたりから正しく計算できなくなってしまいます。本来valueには10^16-1が入りますが、なぜかvalueに10^16が入ってしまいます。
ActiveBasic5.0で確認しました。
コード:
Dim value As Int64
Dim i As Long
For i = 0 To 18
	value = 10^i-1
	debug
Next
投稿記事 Posted: 2006年12月01日(金) 13:34

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean