Numbers 6.1 で、数字フォーマットでは16桁の下一桁が四捨五入される。

従前のNumbersで作成していた表の一つのセルのデーターが変わってしまった。

16桁のデーターの下一桁が四捨五入され、87だったのが90に変わってしまった。

その時点ではデーターフォーマットは数字でした。

ちなみに自動フォーマットにして再入力すれば下一桁まで表示されます。

iMacでも、iPhoneでも同じなので、Nimbersのバグではと疑っています。

Nubersのバージョンが6.1になっていて、それが原因ではないかと思っています。

投稿日 2019/07/19 20:38

返信
返信: 31

2019/07/20 06:20 顕夫 への返信

> 16桁の数字を入力して、入力した値と違う数値が表示される


内部では倍精度浮動小数点数に変換してるからです。我々は数を10進数で扱いますが、コンピュータ内部では2進数で表します。10進数で小数点以下の桁数が5、6であっても、2進数に変換すると無限桁の循環小数になるばあいが少なからずあります。コンピュータ内部では無限の桁数は扱えませんので、有限桁(倍精度なら15、6桁)で四捨五入します。このため単に数字を入力しただけでも誤差が生じます。

16桁の整数しか扱わないなら、整数で表せばこのような誤差は生じませんが、残念ながら表計算ソフトでは全ての数を浮動小数点数に変換して扱いますのでこの誤差は避けられないです。

2019/07/20 02:03 顕夫 への返信

> 表計算ソフトで16桁が表示できなくては、使えませんよね


そういうことなら、専用ソフトをご自分で開発しなくては。

表計算ソフトに限らず、ほとんどのコンピュータを利用した計算精度は倍精度浮動小数(15桁程度の精度)を標準にしてます。品川さんご案内のサポート記事でNumbersなどで計算エンジンを4倍精度浮動小数点数にしてるといっても、15桁の精度は確実に得られるようにしましょうという観点からのものと思います。数値計算には丸めの誤差とか、桁落ちとかありますので、複雑で長大な数値計算だと、倍精度で計算してても、結果は短精度(6桁)もないということも珍しくありません。例えば、15桁の数値から上から10桁目までが同じ15桁の数値を引くとします。この場合だと、たった1度の演算で、結果の数の精度は5桁に落ちてしまいます。これが桁落ちです。

それで、少なくとも途中の計算は4倍精度にして倍精度(15桁)程度の精度は出るようにしましょうという観点と思います。なので、表示が15、6桁というのは理にかなってると思います。4倍精度で計算してるのに、倍精度しか表示しないのはおかしいというのは当たらないと思います、コンピュータの数値計算にそれほどの精度を求められないのです。

四倍精度浮動小数点数 - Wikipedia


2019/07/19 21:13 品川地蔵 への返信

演算結果だけでなく、16桁以上の数字を入力しただけでも、入力時点で16桁目が四捨五入されてしまいますね。

数値としては16桁までしかサポートしないということなのか?

先に示したページでは128bitの10進演算をするということなので、30桁近く行きそうだけど。

2019/07/20 18:19 onesize への返信

16桁目が四捨五入されるのはけしからんというのならコピュータで計算することはやめることです。特別なソフトを利用しない限り、そんなことは不可能なことは最初からわかってることです。その方面の科目でなら、数値計算の誤差で最初に教えることです。今後ハードの性能がどれだけ進化しようと、16が30になるかもしれないけど、有限桁で四捨五入というのは避けられない制約です。数学にちょっと素養のある人なら、実数の世界(現実の世界)が小数で表現できるわけないというでしょう。しかし、コンピュータはどんなに進化しても小数しか扱えないのです。

このスレでバグとしたら、数の表示桁数が30(16以上)に設定できることでしょう。ま、でも、途中の計算過程を見たいということなら、30桁の精度で計算してるのだから表示桁数を30にできることもありかもとは思います。

2019/07/20 19:15 はに への返信

>16桁目が四捨五入されるのはけしからんというのならコピュータで計算することはやめることです


そういことではなく、敢えて云うなら四捨五入する桁数に一貫性がないのが問題ということですよ。

お書きの内容では、計算機.Appでも四捨五入されてしまうように解釈できますが、16桁の計算は問題なく表示されるようです。 もちろん、異なるソフトウェアなので違いがあってもおかしくはありませんが、計算機.Appで問題ないということは、コンピューター自体は演算可能なのでは?


>数の表示桁数が30(16以上)に設定できること


小数点以下の桁数なので、円周率等だと有用ですね。


表計算ソフトに於いて、入力値が16桁というのは一般的ではないとは思いますが、(一般的な)ユーザーはコンピューターを使用するときに内部演算の仕様まで理解した計算はしないでしょう。 それが分かっていれば自身の頭で計算しますよ。

2019/07/22 02:44 はに への返信

>Numbers 6.1だと小数点以下30桁表示にしても0.100..です


私には、昨日のはにさんのレスとの違いが見出せないけど……… それが、今回の仕様変更の重要なところですね。 そうでなければ、エクセルと同じ結果でなければおかしいので。

この事は、凄いことになのかもしれないけど、今スレ主さんが気にしてるのはそこだっけ?


しかし、その事が16桁の入力時に16桁目が四捨五入されることの根拠としては疑問ですよってこと。

Ver 3.6.2では旧来の内部演算処理に於いてもVer 6.1と同様に四捨五入されるので! 故に私は別の問題であろうと考えてるだけですよ。

2019/07/20 21:27 はに への返信

そうであれば、Numbers Ver 6.1での16桁を超える数字の入力を四捨五入されずに表示させる方法(データフォーマット=数字で)又は、具体的な対処をお書きください。そのほうが有益ですね。

私は、Numbersに於いて、16桁の数字入力を行いませんし、小数点以下は4桁又は、5桁目を四捨五入するので今回の件の影響は受けません。 また、内部演算の過程でそれが発生しても今現在は気にしません。

とはいえ、計算機.Appで問題がない以上、コンピューターとはそういうものとしてしまうのは語弊が生じますよ。




2019/07/21 05:23 onesize への返信

興味深い例を挙げます。

最初の例はExcel for Mac 2016で差が0.1になる2つの数の差を計算し、その差が0.1に等しいかどうか判定させたものです。あとの例は同じことをNumbers 6.1でやったものです。Numbersでは21例全てで正しい判定になってますが、Excelでは15例中5例で誤った判定になってます。多分、Numbersで4倍精度浮動小数点数で計算して適切な桁数で四捨五入してるので正しい結果になってるのではないかと思います。

これまでの数値計算の常識では、このような判定をするときには、計算の誤差を考えて判定するようにするというものでしたが、Numbersでは直感のままの判定式でも正しい結果になるのは驚きです。

表計算ソフトでは数字を書き込む場合、計算することを前提に書き込むのが普通と思いますので、書き込みだけでも書き込んだままの数値を表示してくれというのは普通の使い方ではないと思いますので、考えません。そういう使い方なら、Pagesで表を作る方が向いてるかもと思います。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Numbers 6.1 で、数字フォーマットでは16桁の下一桁が四捨五入される。

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。