Ich habe eine Frage an alle.
%Vor%Nach der Ausführung dieses Codes ist a = 7. Ich kann nicht verstehen warum, weil (0.7 + 0.1) = 0.8 und 0.8 * 10 = 8. Kann mir jemand sagen warum? Danke!
Das Problem ist, dass weder 0,1 noch 0,7 genau als double
dargestellt werden können:
0.1
wird als ungefähr 0.10000000000000000555
dargestellt.
0.7
wird als ungefähr 0.69999999999999995559
dargestellt.
Ihre Summe ist ungefähr 0.79999999999999993339
. Mit zehn multipliziert und abgeschnitten, ergibt dies 7
.
Was jeder Informatiker über Gleitkommaarithmetik wissen sollte ist ein Ausgezeichnet lesen Sie zu diesem Thema.
Es ist float arithmetic, es wird floored.
Was hier passiert ist, dass (0.1 + 0.7) wirklich nahe 0.8 ist, aber es ist nicht wirklich 0.8, wenn du es mit 10 multiplizierst, bekommst du 7.9999 ... Wenn du das durchgehst, bekommst du 7.
Tags und Links java