Googleの電卓機能で、一部の大きい数字の計算に問題が発生している。コンピュータの世界ではちらほら耳にするような話だが、とてつもなく大きい数字にちなんで名付けられた、超コンピュータマニアの会社にはあってはいけないことだろう。
常時ではないが、一部の非常に大きい数字でエラーが発生する。例えば、2,999,999,999,999,999から2,999,999,999,999,998を引くと1になるが、Googleの電卓機能では0と表示される。
しかし、切り捨てによって誤りが生じるというわけでもない。1,999,999,999,999,999引く1,999,999,999,999,995は0と、誤った答えが表示されるが、1,999,999,999,999,999引く1,999,999,999,999,993は6と、正しい答えが表示される。また、400,000,000,000,002引く400,000,000,000,001は0と、誤った答えが表示されるが、400,000,000,000,002引く400,000,000,000,000は2と、正しい答えが表示される。
他人の不幸を喜ぶ人たちにとっては最高に楽しいことかもしれないが、Googleは、10の100乗(グーゴル)の計算も苦手なようだ。1グーゴル足す1引く1グーゴルの答えは1が正しいが、0になる。
確かに、正確さを維持しようとすれば、特殊な方法を使って数字をエンコードする必要があるため、この規模での計算は難しい。しかし、電卓を開発する人たちにとって幸いなことに、実世界では比較的まれな要件だ。2つの星の間の距離を測定する場合、数cmレベルの精度を得られるのはまれだ。また、このような精度が実際に意味を持つこともまれだ。
多くの場合、大きい数字は、小さい数字(仮数)に10の乗数(指数)を掛けた2つの値による浮動小数点形式で表される。例えば、Googleの第2四半期の売り上げは12億5000万ドルだったが、「1,250,000,000ドル」「1.25掛ける10の9乗ドル」「1.25×10^9ドル」と表記することもできる。浮動小数点計算は大きな数の計算に便利だが、一般的に、最初の要素は限られた桁数の数字しか把握できないため、途中で若干の誤差が生じる。
コンピュータでの正確な計算は、コンピュータが一般的に0または1の数字しかない2進数で計算をしていることに基づいている。一方、人は0から9までの数字を使った10進数計算を行う。正確性に問題が生じるのは、コンピュータが数字を2進数に変換して処理し、結果を10進数に戻して表示するためだ。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」