Nick nota che la formula “= 0.28100-INT (0.28100) = 0” restituisce False anche se è ovviamente vera. Crede che il problema abbia a che fare con l’arrotondamento e il modo in cui il computer utilizza l’aritmetica binaria, ecc. Nick sta usando la formula come parte di un’istruzione IF più ampia e presume che ci siano altri errori di arrotondamento in Excel che possono raggiungerlo e morderlo . Si chiede se esista un modo semplice per evitare le insidie ​​della formula come questa.

Prima di esaminare semplici modi per evitare questo tipo di problema, è importante capire perché il problema esiste. Come nota Nick, ha davvero a che fare con l’aritmetica binaria e il fatto che Excel arrotonda le informazioni. Dietro le quinte, Excel arrotonda sempre le informazioni a 15 cifre. Considera il calcolo con cui Nick sta lavorando:

=0.28100-INT(0.28100)=0

Quando Excel lo calcola per la prima volta, la precedenza seguita da Excel lo calcola in questo modo:

=(0.28100-INT(0.28100))=0

Nota la serie extra di parentesi. Il risultato di tutto ciò a sinistra di quel segno finale di uguale è 3.55E-15, il che significa che finisci con questa formula (a mano lunga):

=0.00000000000000355=0

Questo ovviamente non è vero, motivo per cui ottieni il valore False restituito. Esistono diversi modi per “risolvere” questa situazione. In questo caso, forse il più semplice è cambiare semplicemente la formula per eliminare la necessità di confrontare a zero:

=0.28100=INT(0.28100)

Questa formula restituisce True, come ci si aspetterebbe. Tuttavia, potrebbe non funzionare per tutte le tue esigenze. Quindi, una regola pratica migliore per evitare problemi è non fare mai affidamento sull’arrotondamento di Excel. Puoi farlo implementando il tuo arrotondamento esplicito, come mostrato con queste formule:

=INT(0.28100)-INT(0.28100)=0 =ROUND(0.28100,0)-INT(0.28100)=0 =ROUND(0.28100,5)-ROUND(0.28100,5)=0

Si noti che, in questi casi, non si consente a Excel di eseguire calcoli con la massima precisione poiché ciò può causare risultati imprevisti quando si confronta un valore specifico, ad esempio zero.

Invece, stai costringendo Excel ad arrotondare i valori, tutti i valori con cui stai lavorando, a qualsiasi livello di precisione necessario per il confronto.

Un altro approccio consiste nel non fare il confronto con un valore esatto, come zero. Considera invece alcuni “fattori di confusione” nel confronto, che consentono problemi di arrotondamento. Ad esempio, puoi stabilire che ti interessa solo se il confronto è accurato fino a un centesimo di qualsiasi unità che stai assumendo. In tal caso, la formula originale potrebbe essere modificata in questo modo:

=0.28100-INT(0.28100)<0.01

Ciò restituisce True, come ci si aspetterebbe.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (8145) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia di menu precedente di Excel qui: