mod関数と算数

返信する
knmt
記事: 6
登録日時: 8月 23, 2014, 9:27 pm

mod関数と算数

投稿記事 by knmt »

初歩的質問ですが、
算数では割り算の余りは、割り切れなかった計算結果が小数点以下の数値だと記憶していました。
OOoCalcでは、 2 ÷ 1 = ? 余り 1 です。
算数では、 2 ÷ 1 = 2 余り 0 だと思ったのですが。

****
補足です。
定数の 2 と、定数の 1 で、=mod(2;1)はさすがに大丈夫みたいですが、
こんなの実際に使用しますかね、
mod(変数;変数)だと予期しない結果が出る場合があるみたいです。
Apache OpenOffice 4.1.0 AOO410m18(Build:9764) - Rev. 1589052
Windows 7 Home Premium Microsoft Windows Ver 6.1 (Build 7601: Service Pack 1)
pocota
記事: 32
登録日時: 6月 13, 2014, 4:10 pm
お住まい: 千葉県松戸市

Re: mod関数と算数

投稿記事 by pocota »

さすがにこれは再現できませんでした。

2÷1=(A1)÷(B1)=INT(A1/B1)
2 mod 1 = MOD(A1;B1)

結果は算数の教科書通り、
2÷1=1あまり0
3÷1=3あまり0
3÷2=1あまり1

となりました。
AOO 4.1.1 (OS X Yosemite 10.10.2)
AOO 4.1.1 (Windows 7)
knmt
記事: 6
登録日時: 8月 23, 2014, 9:27 pm

Re: mod関数と算数

投稿記事 by knmt »

応答していただきましてありがとうございます。
私は「再現性有り」を期待したのですが、
やはり、可能性最大の「再現性無し」ですか。
現象は、剰余の0か1かの 整数 を求めているところに、
なんと、小数点以下を含む 実数 が返ってくるというものです。
結果は、整数(0.0?/1.0?)と実数(0.0000xxx等/1.00000yyyy等)の混在です。
何が条件でそうなるのか全く分からずで、
如何なる値でも結果が同じだったので、
バグ?もJavaの環境?も含め直す手掛かりが欲しかったのです。
しかし、
待っていられず、全てにInteger化して対応するしかありませんでした。
例:関数1(関数2(関数3()))→int(関数1(int(関数2(int(関数3())))))
Apache OpenOffice 4.1.0 AOO410m18(Build:9764) - Rev. 1589052
Windows 7 Home Premium Microsoft Windows Ver 6.1 (Build 7601: Service Pack 1)
pocota
記事: 32
登録日時: 6月 13, 2014, 4:10 pm
お住まい: 千葉県松戸市

Re: mod関数と算数

投稿記事 by pocota »

商と余りの関数の使い方に誤りはないでしょうか。

参考ファイルを添付いたします。
セルD2とE2は中身のようになっていますか?

これなら誤動作しないはずだと思います。
添付ファイル
割り算の計算.ods
(10.21 KiB) ダウンロード数: 348 回
AOO 4.1.1 (OS X Yosemite 10.10.2)
AOO 4.1.1 (Windows 7)
knmt
記事: 6
登録日時: 8月 23, 2014, 9:27 pm

Re: mod関数と算数

投稿記事 by knmt »

対応ありがとうございます。
動作結果です。
割られる数 割る数 商 あまり
3.5 2.2 1.0000000000000000 1.3000000000000000
2 1 2.0000000000000000 0.0000000000000000
234555 342 685.0000000000000000 285.0000000000000000
とりあえず、期待値と思います。
当然と言えば当然ですが...。

ただ、
私の表記と表現が悪かったかもしれません。
問題点は、割り算の商ではなく、
余りの値に有りました。
> OOoCalcでは、 2 ÷ 1 = ? 余り 1 です。
> 算数では、 2 ÷ 1 = 2 余り 0 だと思ったのですが。
この「?」にではなく「余り 1」に有ります。
関数の戻り値が期待値として整数の「0」に対して、内部の値そのものの「約0」か
「四捨五入して1」なのは、私にとって バグ って認識です。
約0≠0です。
驚くことに、この現象は=mod(x;y)で簡単に発生したのです。
上記と同様の演算結果で小数点以下に誤差と思われる値が現れていました。
ただし、x=2(定数),y=1(定数)ではなく、他の参照か演算結果。

この結果は、OOoCalcとその開発者の信用問題と等しいと思いました。
しかし、ソースコード上と開発時の検証には絶対に問題が無いのでしょう。
外に問題の混入する余地が有ると思いました。
そのために、当時、同じ目に遭った方がいらしたらと思い、
回避策を求めて質問を投稿したのですが、
けれども、現在は再現するのは不可能かもしれません。
私のOOoCalcは未変更ですが、すでに、
影響すると思われるJavaは何度もアップデートされています。
Apache OpenOffice 4.1.0 AOO410m18(Build:9764) - Rev. 1589052
Windows 7 Home Premium Microsoft Windows Ver 6.1 (Build 7601: Service Pack 1)
返信する

“フォーミュラ(数式)やチャート(グラフ)”に戻る