Excel 2007裡存在一個重大bug,會將850*77.1錯誤地計算為100000,而不是65535。
當然,850*77.1並不是一個特例,不信你可以在Excel 2007裡計算下邊這些乘法:
=5.1*12850
=10.2*6425
=20.4*3212.5
=40.8*1606.25
=154.2*425
=212.5*308.4
=308.4*212.5
=425*154.2
結果都是100000吧?
這個BUG最先在Google Group裡一個以微軟Office Excel為主題的新聞組的報告被提及,這個問題很快得到了多名專家的確認,Excel MVP Bernad Leingme更是第一個站了出來。
事實上,問題出現在65535這個數字上。雖然現在還沒能最終肯定到底是什麼原因,但考慮到65535這個數字的特殊性(轉換成二進制就是1111111111111111,16位無符號整數能表示的最大值),初步懷疑Excel 2007在浮點計算或者捨入誤差方面出現了失誤。另外還可以看出,出錯的乘法公式中至少有一個數字帶有一位小數。
更進一步地,如果把上述乘法之一放在A1單元格裡,然後A1+1就會返回100001,A1*1返回100000,A1/1返回100000。這些無疑都是錯誤的,因為Excel 2007已經把A1的值當成了100000,不過奇怪的是,A1*2返回的卻是正確的131070,A1-1也是65534沒錯,A1/2也准確得到了32767.5。Excel 2007如此反復無常的確令人難以琢磨。
測試還表明,Office 2000/XP/2003等舊版本都不存在這個bug,看來只是Office 2007的新“專利”了。
出現這麼低級的bug,微軟工作人員開發和審核的不嚴謹是很顯然的,至少可以說是百密一疏,尤其是舊版產品反而沒有問題,無疑會讓微軟更加尴尬。