Du tror desimaltall er eksakte

Handler om: Datatype

Et float lagres binært, og mange desimaltall kan ikke lagres helt nøyaktig: 0.1 + 0.2 gir 0.30000000000000004, og 0.1 + 0.2 == 0.3 er False. Rund av med round(x, 2) eller f"{x:.2f}" når du viser svaret, og sammenlign aldri desimaltall med ==.

Eksempel

Handlekurven viser 886.9499999999999 kr.

Slik tenker du riktig om det

Regn med desimaltall som med en lommeregner med få siffer: litt unøyaktig i siste siffer. Bestem hvor mange desimaler svaret skal ha, og rund av når du viser det.

Slik ser det ut i kode

Slik gikk det galt

print(1.1 + 2.2 == 3.3)   # False

Slik fikser du det

print(round(1.1 + 2.2, 2) == 3.3)   # True

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala