LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ

LibreOffice CalcとExcelでフィボナッチ数列を計算すると結果に違いが生じたそうです。 丸め誤差の処理の差では?という予想はつきましたが、調べられなかったので検証をお願いをしたところ、いろんな事がわかったのでまとめました。 最後、奥村先生の話の中で、以前のExcelの誤差の丸め方が少し違うようなので注意が必要そうです
94
寿限無🍮 @haou13fri

あ?なるほど $ ruby -v ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux-gnu] sqrt5 = 2.23606797749979 for a in 1..25 b = (((1 sqrt5)/2)*.. togetter.com/li/1367733#c64… 「LibreOffice CalcとExcelの計算結果誤差をみなさんで検証し..」togetter.com/li/1367733 にコメントしました。

2019-06-19 21:26:00
寿限無🍮 @haou13fri

これの結果がこうよ 1.0 1.0 2.0 3.0000000000000004 5.000000000000001 (中略) 46368.00000000004 75025.00000000006 LibreOfficeの結果は75025.00000000.. togetter.com/li/1367733#c64… 「LibreOffice CalcとExcelの計算結果誤差をみなさんで検証し..」togetter.com/li/1367733 にコメントしました。

2019-06-19 21:30:50
寿限無🍮 @haou13fri

@LibreOffice_Ja しばらくRubyで検算しておりましたが、確かにLibreOfficeCalcで生じていた誤差は、標準的な倍精度浮動小数点演算で生じる誤差によるものです。少なくともLibreOfficeの動作に異常があるような話ではない。俺のツイートが誤解を生じさせてしまったような内容だったので、そこは申し訳なかった。

2019-06-19 21:58:55

ここからは、まとめ公表以降の反応を(雑に)集めました

スレッドでまとめたかったのですが、Togetterに慣れていないのと話が広がっているので検索で出た方を集めました。

LibreOffice日本語チーム @LibreOffice_Ja

昨日、ツイートの結果をまとめてます。現在のExcelが昔の方法を引き継いでいると仮定したなら、誤差はExcel側に原因がありそうです。引き続き情報をお待ちしています / LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ - Togetter togetter.com/li/1367733

2019-06-19 10:22:48
ぱりー @Woofer30

@LibreOffice_Ja 再現しませんでした twitter.com/Woofer30/statu…

2019-06-19 11:48:50
はーりぃ @Woofer30

たまたま見かけて気になって試してみたのですが、CalcとExcelとで誤差は生じませんでした。おそらく数式の入力ミスか、バージョンもしくは環境依存で発生する事象だと思います。 Excelはv16.26、Calcはv6.2.4.2、OSはmacOS Mojave v10.14.5です。 pic.twitter.com/w5a3csmUqZ twitter.com/haou13fri/stat…

2019-06-19 10:32:00
ぱりー @Woofer30

@LibreOffice_Ja すいません、小数点以下10桁で誤差が出てました。再現しました。

2019-06-19 11:57:51
ねるにあ†Ridill @nelnia

普段の生活の中でここまでの精度はまず使わないけど、内部はしっかり2進数で計算してるんだなぁという感想→ LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ - Togetter togetter.com/li/1367733

2019-06-19 11:56:15
miri_junk('●ω●'-) @miri_junk

@LibreOffice_Ja エクセルの方を小数点以下を強制表記させたら同じ値になりませんか?

2019-06-19 12:10:49
いさな @jo3emc

@es_chuui @hiddenbugs @argrath @LibreOffice_Ja まとめもリリースされて議論は収束していますが、丁度MinGWを入れてたところだったのでgccでも試してみました。 またCalc貼り込み時に丸めがかかってたようなのでテキストで貼り直しました。各々小数点以下15桁までプリントしています。 こうしてみるとLibOは演算の桁数がやや少なそうではあります。 pic.twitter.com/hUXsebl36s

2019-06-19 12:21:23
拡大
Chuui @es_chuui

@jo3emc @hiddenbugs @argrath @LibreOffice_Ja (続き) 過去に私が Excel2007の数値の精度を調べたら、セルの整数値はMSBがSignの40bit精度でした。(他に、ExcelVBA側には、CDec関数(Decimal)やCCur関数(通貨型)なども用意されています。) なお、Excelセルの浮動小数点値の精度は未調査です。 詳しい方教えて!

2019-06-19 12:48:52
Chuui @es_chuui

@jo3emc @hiddenbugs @argrath @LibreOffice_Ja なるほど、フィボナッチ数を一般項の式「ビネの公式」で計算した場合、 gccのdoubleの精度なら誤差が残るが、floatの精度だと誤差がまるめられて、一見きれいな整数部だけになる、ということですね。

2019-06-19 12:52:47
いさな @jo3emc

@es_chuui @hiddenbugs @argrath @LibreOffice_Ja ですねですね。まぁ当たり前なので意味はないのだけれども参考として並べてみた感じですw。

2019-06-19 13:19:10
いさな @jo3emc

@es_chuui @hiddenbugs @argrath @LibreOffice_Ja ふと思い出したのですが、いつぞやのWinメジャーVerUpの際に標準アクセサリーの電卓で同様の件(整数の引き算で小数が残る)が大問題になったことがありました。当時は自分もあまり深く考えてなくて「そうだそうだ!」と憤ってたのですがw、そういうバカよけがMSの標準実装になっちゃったのかも…?

2019-06-19 13:19:24
fedorax @fedoran

Excelの代用で、LibreOfficeを使うと、こういう事があるから注意が必要だな。 #RPA twitter.com/LibreOffice_Ja…

2019-06-19 14:23:36
いさな @jo3emc

@LibreOffice_Ja あ…そうか。LibOは有効数字15桁で強制的に丸め処理が入るんだ…。計算でも、貼り付けでも…。 妥当っちゃ妥当だけど悩ましいっちゃ悩ましい…。 後で試してみよう。

2019-06-19 14:32:07
いくや (AWASHIRO Ikuya) @ikunya

LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ - Togetter togetter.com/li/1367733 独自に丸めていて、しかもクローズドソースでどうなっているのかよくわからないというExcelの擁護をしようがないって話じゃないの……?

2019-06-19 14:49:56
elcondor @elcondor

規格にないアドホックなブラックボックスというのは怖いよねえ。必要な精度が高い計算には使うなということだよね。まあそういうものではある。 / “LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ - Togetter” htn.to/3tefni4n29

2019-06-19 15:17:21
01_02_05 @01_02_05

エクセルの関数はそもそもが銀行丸めだから、知らずに使うと普通の決算書レベルの計算でも値が変わるシチュエーションはあるよね。 togetter.com/li/1367733#c64… 「LibreOffice CalcとExcelの計算結果誤差をみなさんで検証し..」togetter.com/li/1367733 にコメントしました。

2019-06-19 15:33:10
Ryusei @mandel59

真の値と丸めた値の差の大きさが問題になる科学技術計算と違って、財務計算は10進数の丸めと2進数の丸めの差を問題にする、そこがこの問題の本質だよね。最初から10進数で計算すれば悩まずに済むのだが…… / “LibreOffice CalcとExcelの計算結果誤差をみなさんで検証して…” htn.to/2ji9XQ2pqb

2019-06-19 21:00:02
鼠取り猫@干しタラ、塩漬け牛肉の友 @funa_neko

普段使いのパソコンの OS が Linux なので、ちょっと興味あるかも? LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ - Togetter togetter.com/li/1367733 @togetter_jpさんから

2019-06-19 21:04:05
Ryusei @mandel59

1年前のこのときにLibreOffice Calcの丸め処理のコードを実際に確認してるんだけど、ツイートしてなかったっけ

2019-06-19 21:08:53
Ryusei @mandel59

たしか、LibreOffice Calcのroundの処理は、2進数と10進数で丸めが違う問題に対処するにしては、足してる数が大きすぎるんじゃなかったか

2019-06-19 21:14:43
TAGA Yoshitaka @TagaYoshitaka

Google表計算でもやってみた。等号が成立していても、差がある。 Excel と LibreOffice にエクスポートしてみたが、Excelの結果が、LibreOffice や Number と違い、かけ算を使う式より pow() を使うはずの式のときの方がよいのが、釈然としない togetter.com/li/1367733 docs.google.com/spreadsheets/d…

2019-06-19 22:33:03