Hoe kun je het probleem met drijvende komma vermijden zonder NUMERIC te gebruiken? Wat is een alternatieve aanpak met het type INT?
sobes.tech AI
Antwoord van AI
Het probleem met drijvende-komma getallen ontstaat door de beperkte precisie bij de representatie van getallen met een decimale deel in de float- of double-typen. Om afrondingsfouten te voorkomen zonder de NUMERIC-waarde te gebruiken (die nauwkeurige vaste-komma-aritmetiek biedt), wordt vaak een aanpak met gehele getallen (INT) toegepast.
Het idee is om de waarden op te slaan in de kleinste eenheden, bijvoorbeeld in plaats van 12,34 op te slaan, 1234 (vermenigvuldigd met 100). Op deze manier worden alle bewerkingen uitgevoerd met gehele getallen, wat afrondingsfouten die typisch zijn voor floats uitsluit.
Voorbeeld in Go:
package main
import "fmt"
func main() {
// We slaan geld op in centen (geheel getal)
var priceCents int = 1234 // 12,34 roebel
// Voeg 0,66 roebel toe (66 centen)
priceCents += 66
fmt.Printf("Prijs: %d.%02d roebel\n", priceCents/100, priceCents%100)
}
Deze aanpak wordt veel gebruikt in financiële toepassingen waar precisie en het ontbreken van afrondingsfouten belangrijk zijn.