Kod: Markera allt
>>> 156 * 0.1
15.600000000000001
>>> 156 * 0.2
31.200000000000003
>>> 156 * 0.3
46.8
Felet verkar inte upprepa sig på andra heltal än 156 (har visserligen inte testat spec. många)
Kod: Markera allt
>>> 156 * 0.1
15.600000000000001
>>> 156 * 0.2
31.200000000000003
>>> 156 * 0.3
46.8
Ja. Räkneenheten i de flesta datorer representerar flyttal med IEEE-standard ( http://sv.wikipedia.org/wiki/IEEE_754 ) och de flesta programspråk använder flyttalsrepresentation i datorn den kör på för att det är snabbast och enklast så.Rasmus skrev: Är det likadant i alla språk? Och är det nått språk som kan få ännu märkligare företeelser?
Kod: Markera allt
python
>>> x=3+0.31 # matematiskt 3.31
>>> y=3.31/144*144 # matematiskt 3.31
>>> x
3.3100000000000001
>>> y
3.3099999999999996
>>> x-y
4.4408920985006262e-16
>>> x==y # exakt jämförelse
False
>>> abs(x-y)<0.000001 # ungefärlig jämförelse
True