![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
LibreOffice CalcとExcelの計算結果誤差をみなさんで検証していただいた結果まとめ
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
これ、誰か検証していただけませんか? この方が書かれている「結果の信頼性はExcelに分があるように思う」も、なぜそう思われたのか理由も含めて調べるには時間がかかりそうなので(中の人は数学苦手…) twitter.com/haou13fri/stat…
2019-06-18 23:06:42![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
一般項によりフィボナッチ数列を計算すると、LibreOffice Calc では、ちょうど25番目で本来の結果とのずれが生じた。しかしExcelだとExcel2000と2019で試したが、いずれも結果にずれは生じなかった。
2019-06-17 13:15:12検証の発端となったツイート
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
一般項によりフィボナッチ数列を計算すると、LibreOffice Calc では、ちょうど25番目で本来の結果とのずれが生じた。しかしExcelだとExcel2000と2019で試したが、いずれも結果にずれは生じなかった。
2019-06-17 13:15:12![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
方法。セルA1に1、B1に数式 =(((1+SQRT(5))/2)^A1-((1-SQRT(5)/2)^A1)/SQRT(5) を入れる。A2に2、B2はB1のcopyを入れ、A3とB3以下は上からドラッグする。
2019-06-17 13:15:12![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
結論。やはりそれぞれのOfficeソフトウェアに一長一短があるので、使い分けるしかない。一方は他方の代わりにはならない。結果の信頼性はExcelに分があるように思う。
2019-06-17 13:15:12検証していただいたツイート
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@LibreOffice_Ja LibreOffice 6.4 nightly(x64), Excel 2016 で =1/SQRT(5)*(((1+SQRT(5))/2)^A1-(((1-SQRT(5))/2)^A1)) は共にA1が25のとき75025になりました。 なお、式はWikipediaを見ながら修正しています。 1/SQRT(5)が乗算されていなかったのと、 (1-SQRT(5))/2ではなく(1-(SQRT(5)/2))となる式になっていた
2019-06-18 23:36:22![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@hiddenbugs @LibreOffice_Ja 75025になっているセルの書式設定で小数点以下15桁とかにするとLibOは10桁目に1が出てきますね。Excelは0です。
2019-06-19 00:16:31![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
LibOの実数演算で誤差が出るやつ、出ること自体は仕方ないにしても小数点以下15桁とか表示させたときに10桁目に誤差が出てしまうのはちょっといけてないな…。long doubleで扱うべきところがどこかでdoubleになってるとかなんだろうけど。
2019-06-19 00:48:15![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@hiddenbugs @argrath @LibreOffice_Ja Excelは手元になくて比較できませんが、LibOの状況は再現しました(Win7 32bit)。(haou13friさん例示の数式は転記ミスの模様。) 余談ながらTclとPythonでも試してみたところLibOと概ね同じ挙動でした。Cは今環境がなくて試せてません。要は2進数の丸めの扱いですね…。 pic.twitter.com/UwgNZ8kxVC
2019-06-19 02:50:22![](https://pbs.twimg.com/media/D9XIl4FUEAAMloA.png:medium)
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@hiddenbugs @argrath @LibreOffice_Ja 逆に言うとExcelで整数値が帰ってくる方がおかしいとも…? あるいはDecimal計算がデフォルトになってるのか…。
2019-06-19 02:52:39![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@jo3emc @hiddenbugs @argrath @LibreOffice_Ja Excel Onlineで試してみました。確かにn=25でも誤差が生じないです。n=74で漸化式計算側も精度の情報落ちが生じますが、逆にいうとn=1~73まで正しく整数で答えが出ていることが確認できました。(確認のため小数点以下を30桁表示しました。実際の内部の演算精度はそこまでないと思いますが。) pic.twitter.com/5oU7uHDZuy
2019-06-19 07:03:42![](https://pbs.twimg.com/media/D9YCTH9U8AAdlby.png:medium)
![](https://pbs.twimg.com/media/D9YCrk6U0AA92_G.png:medium)
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@jo3emc @hiddenbugs @argrath @LibreOffice_Ja (考察1) 一般に浮動小数点の演算はIEEE754の規格を使う。 多くのプログラム言語では倍精度(64bit)を使うが、他にも倍々精度・拡張精度・拡張倍精度が定義されており、IntelCPUのFPUは対応している。Excelはそれを使っているのか? (考察2) 数式処理で、なるべく誤差がでない計算をしているのか? 続く
2019-06-19 07:29:36![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@jo3emc @hiddenbugs @argrath @LibreOffice_Ja (考察3) 独自の浮動小数点のフォーマットをプログラム用意する方法とか? だが、FPUが対応していない浮動小数点書式を扱うのは、さすがに演算速度が厳しいのでは?(整数ならともかく) (考察4) IEEE754(浮動小数)の丸め指定で、なるべく端数がでないのを選んでいるとか? う~む、詳しい方教えて!
2019-06-19 07:31:01Excelの丸め誤差について
神戸大の中澤先生と三重大の奥村先生の話の中で、Excelの数字の丸め方が特殊?であるという話が出ました
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
浮動小数点演算の丸め誤差が出ない方が特殊な処理だと思う。Rで A <- 1:25; B <- (((1+sqrt(5))/2)^A-(((1-sqrt(5))/2)^A))/sqrt(5); C <- numeric(25); C[1] <- 1; C[2] <- 1; for (i in 3:25) { C[i] <- C[i-2] + C[i-1] }; B==C とやると4項目からFALSE twitter.com/LibreOffice_Ja…
2019-06-19 08:19:00![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
確かにoptions(digits=20); Bとやると,4項目が3.0000000000000004となっている。25項目は誤差が5e-11を初めて超える項。ちなみにLibreOffice Calc 6.2.4.2 (x64)では,小数点以下16桁表示で10桁目に1が出るがB=CはTRUEを返す。 pic.twitter.com/YJUKURp4IL
2019-06-19 08:26:57![](https://pbs.twimg.com/media/D9YVqtKU8AAptng.jpg:medium)
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
昔調べたことですが,Excelの不動小数点演算はおかしな(まずい)ことをしているようです oku.edu.mie-u.ac.jp/~okumura/softw… twitter.com/MinatoNakazawa…
2019-06-19 09:22:07![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@LibreOffice_Ja 引用RTでRでの計算結果から,Excelの方が特殊な処理をしているのではないかと書いたら,三重大学の奥村先生がコメントくださり twitter.com/h_okumura/stat… かつて検証されたページを教えてくださいました。
2019-06-19 09:43:30