Top > OOobbs2 > 37

OOobbs2/37 Edit

  • サマリ: 通貨変数
  • 環境: Calc
  • 状態: 未解決
  • 投稿者: suou?
  • 投稿日: 2007-04-22 (日) 07:20:28

質問 Edit

いつも懇切丁寧なご教授ありがとうございます。さて、通貨変数a,bを定義して引き算をさせるとおかしな結果がでます。マクロ中で実行させて結果がおかしかったので、下のような単純なマクロをつくって実行させても、おかしな結果が出ます。大きな金額を使えなくて大変困りました。何か基本的な設定をしないと正しく作動しないのでしょうか?OOoのバージョンは2.0.3です。OOo1.1.5でも不具合は同じでした。さらにOOo2.1.0で試しましたが、やはりだめでした。

Sub test2()

	Dim a@, b@, c@
	a=309622
	b=20664
	c=a-b
	msgbox a    '309622.0000と表示
	msgbox b    ' 20664.0000と表示
	msgbox a-b  '81261826065324.3872と表示。試行時により変わる。
	msgbox c    '81261826065324.3872と表示。試行時により変わる。

End Sub

回答 Edit

  • 2.1.0 で同じ現象が確認できました。少し調べると、

issue では次のものに相当するのかもしれません

http://www.openoffice.org/issues/show_bug.cgi?id=54049

  • はにゃ?? 2007-04-22 (日) 16:48:02
  • 早速情報を頂きありがとうございました。Linux版の英語版では正常な動作をするものがあるようですね。仕方ないので、2,147,483,647以下の数値を扱う場合はLong変数を使い、超の場合はCurrency変数を使うようにプログラムを分けて対応することにして、切り抜けられました。ありがとうございました。 -- suou? 2007-04-22 (日) 17:10:15
  • 2.2.0 で試してみましたが、同様でした。 -- はにゃ?? 2007-04-22 (日) 17:43:24
  • ありがとうございます。その後いろいろ試したところ、最初に代入した数が小さい場合には必ず誤動作をすることが分かりました。そこで、
    ?最初に通貨変数に100億円を代入し、
    ?その後、目的の演算をして、
    ?最後に100億円を引く  
    という方法に変えたら、今のところは、通貨変数を生かせてうまく行っています。

ところで、ユーザー=ooo,PWD=ooo(いずれもアルファベットのオーの小文字)がなかなか見つからなくて、ここに書き込みができませんでした。 -- suou? 2007-04-27 (金) 07:16:43


感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes