Die Frage ist, warum geben diese Code-Schnipsel unterschiedliche Ergebnisse?einfache Berechnung, andere Ergebnisse in C# und delphi
private void InitializeOther()
{
double d1, d2, d3;
int i1;
d1 = 4.271343859532459e+18;
d2 = 4621333065.0;
i1 = 5;
d3 = (i1 * d1) - Utils.Sqr(d2);
MessageBox.Show(d3.ToString());
}
und
procedure TForm1.InitializeOther;
var d1, d2, d3 : Double;
i1 : Integer;
begin
d1:=4.271343859532459e+18;
d2:=4621333065.0;
i1:=5;
d3:=i1*d1-Sqr(d2);
ShowMessage(FloatToStr(d3));
end;
Der Delphi-Code gibt mir 816, während der C# -Code gibt mir 0 einen Rechner verwenden, erhalte ich 775. Kann jemand mir bitte eine detaillierte Erklärung geben?
Vielen Dank!
Fehler in Utils.Sqr vielleicht? –
Dies ist eine "einfache Berechnung"? Nicht mit Fließkommazahlen ist es nicht. –
Wenn Sie den Delphi-Typ von Double zu Extended ändern, lautet die Antwort 776, was den Punkt bezüglich der Rundung beweist. Vielleicht möchten Sie eine Bignum-Bibliothek oder andere wissenschaftliche Bibliotheken auschecken, wenn Sie mit so großen fp-Zahlen umgehen wollen. –