schauen Sie den folgenden Code, warum das Ergebnis der Trunc-Funktion ist anders?Trunc() Funktion
procedure TForm1.Button1Click(Sender: TObject);
var
D: Double;
E: Extended;
I: Int64;
begin
D := Frac(101/100) * 100;
E := Frac(101/100) * 100;
I := Trunc(D);
ShowMessage('Trunc(Double): ' + IntToStr(I)); // Trunc(Double): 1
I := Trunc(E);
ShowMessage('Trunc(Extended): ' + IntToStr(I)); // Trunc(Extended): 0
end;
smok1, wir oft Float-Zahlen ohne die richtige Formatierung Parameter untersuchen und wir gehen davon aus, dass wir die wirklichen Werte erhalten. Das ist natürlich falsch, denn wie Sie richtig erwähnt haben, sind die Gleitkommazahlen eine Annäherung an die tatsächlichen Zahlen. +1 –
+1 für die Erklärung, dass Computer Gleitkommazahlen als Näherung speichern –
Nicht jede Gleitkommazahl ist eine Annäherung. Negative Zweierpotenzen und deren Summen (zB 0,5) werden ohne Approximation dargestellt. – gabr