Vad är ett aritmetiskt överflöde?

Ett aritmetiskt spill är ett tillstånd som uppstår i datorer, särskilt inom området datorprogrammering, när en beräkning eller operation ger ett resultat som är för stort för lagringssystemet eller registret att hantera. Overflow kan också hänvisa till mängden genom att med det givna resultatet överstiger det minne som är avsett för lagring. I vissa fall kan överflödet av data lagras på en annan datalagringsplats; i andra kan det få ett program att krascha, köra långsamt eller ge felaktiga resultat. Aritmetiskt spill är inte begränsat till kompletta person- eller företagsdatorer, eftersom enkla handhållna miniräknare och kommunikationsenheter också har gränser för storleken på de värden de kan hantera.

Programmerare tenderar att lära sig metoder för att hantera aritmetiska spillfel tidigt i sina utbildningar, eftersom de tenderar att vara mycket vanliga programmeringsfel att ta emot. Det finns många olika metoder för att lämna aritmetiskt spill. Utformningen av programmet spelar en mycket viktig roll; ett väldesignat program som använder konsekventa och korrekta datatyper och längder bör inte uppleva sådana fel. Om stor noggrannhet läggs på att kontrollera ordningen på operationerna och hålla allt konsekvent, kan spillfel undvikas helt.

Ett annat sätt att hantera aritmetiska spillfel är att dela upp operationer i mindre steg. Det är ofta lättare för ett system att hantera enkla, små operationer än komplexa operationer som involverar stora siffror och överdrivna beräkningar. När det inte är extremt viktigt att siffran som returneras är helt korrekt räcker det ibland med att skriva programmet på ett sådant sätt att det meddelar användaren om spillfelet men returnerar ett värde ändå. Det vanligaste sättet att hantera ett aritmetiskt spillfel är att ignorera det helt. Även om detta vanligtvis är ofarligt, kan det ge felaktiga resultat och kan äventyra programmets användbarhet och effektivitet.

Ariane 5 flight 501 illustrerar tydligt farorna med aritmetiska spillfel. Flygningen var den första testkörningen av det europeiska Ariane 5 förbrukningsbara uppskjutningssystemet, som återanvände mycket av koden från det gamla Ariane 4-systemet. Accelerationen för Ariane 5 var dock betydligt större än för Ariane 4, och programmeringen var inte tillräcklig för att hantera de större värden som behövdes. Som sådan lämnade raketen sin avsedda flygbana 37 sekunder efter uppskjutning och måste förstöras. Detta enkla programmeringsfel kostade hundratals miljoner amerikanska dollar.