#include<stdio.h>
int main()
{
int loopCounter = 0;
float data1,data2;
data1 = 2000.0f;
data2 = 0.0001f;
while(1)
{
data1 = data1 + data2;
printf("Loop Counter %d , Data %f\n",loopCounter,data1);
loopCounter++;
}
return 0;
}
ich diesen Code leite auf Linux-Rechner den GCC-Compiler verwenden, aber wenn die Zugabe des 2 Schwimmer 2048.0
den Wert erreicht, es ändert sich nicht mehr.Zwei Gleitkommaaddition ändert sich nicht Ergebnis
Hat jemand eine Idee, warum das passiert?
Was meinst du mit "Halt"? Stoppt es oder druckt es weiterhin den gleichen Wert? – Gerhardh
Kennen Sie die Genauigkeitsbegrenzung von Fließkomma-Datentypen? – Gerhardh
Sie meinen, es "hält", weil es Daten2 hinzufügt, ohne Daten1 zu ändern? Kennen Sie die Ungenauigkeit von Float? Ihr Code ist perfekt, um diesen speziellen Wert zu finden, bei dem die Daten2 so klein sind, dass ihr Affekt nicht in den Akkumulatordaten1 dargestellt werden kann. – Yunnosch