Il forum pubblico Microsoft dedicato ad Excel ha permesso la segnalazione di un grave bug relativo ad Excel 2007 e legato ad una errata valutazione dei risultati di alcuni particolari calcoli matematici. Come scrive Molham Serry in apertura del post ‘Bug in Excel 2007‘, «provate a moltiplicare 850×77,1. Excel visualizza come risultato 100.000!!!». Molti altri esempi di moltiplicazioni che conducono allo stesso errore si susseguono nei post di risposta alla ‘provocazione’, come ad esempio 5,1 x 12.850, 10,2 x 6425 oppure 20,4 x 3212,5. Osservando con attenzione si può notare come tutte le moltiplicazioni riportate abbiano un unico comune denominatore: il numero 65.535. Ogni operazione di moltiplicazione che dovrebbe valutare come risultato tale numero, sembra dare invece come risposta 100.000.
Un utente del forum ha provato a studiare il comportamento dell’anomalo risultato se sottoposto ad ulteriori operazioni. Il risultato è il seguente: «supponiamo che la formula sia A1. A1+1 ritorna 100.001. A1 x 2 ritorna 131.070, come se A1 avesse dato 65.535 (il risultato corretto). A1 x 1 rimane 100.000, A1-1 ritorna 65.534, A1/1 rimane 100.000 mentre A1/2 conduce a 32.767,5. Si tratta di una scoperta «molto, molto negativa», scrive Harlan Grove, «poichè implica che il valore in A1 non è posto direttamente sullo stack della FPU», il che porta ad un propagarsi dell’errore a seconda delle operazioni successive effettuate.
Le menti più matematiche si sono messe all’opera per cercare di svelare il mistero, il quale comunque è stato prontamente segnalato a Microsoft (ve ne è conferma diretta sul post in questione). L’errore di calcolo ha presentato l’occasione per ricordare un altro bug presente in Office sin dalla versione 5 e che si ripropone immutato anche nella edizione 2007: nel caso si scriva o calcoli un numero compreso tra 32.768 e 65.535 che contiene una porzione decimale di .848, il numero viene visualizzato con una porzione decimale di .8479999999. Ancora una volta si impone alla presenza il magico numero 65.535, il valore più grande rappresentabile utilizzando 16 bit.