Ich fragte diese Frage vor jetzt, als ich diese Frage zum ersten Mal fragte, wusste ich nicht, was das Problem war, aber ich weiß und ich habe versucht zu lesen Ist Gleitkomma-Mathematik gebrochen? und warum sind Fließkommazahlen ungenau? Sie zeigten den Grund für die Probleme, aber ich sah sowieso nicht, wie ich dieses Problem im Code, den ich geschrieben habe, umgehen konnte. Jetzt frage ich, ob irgendjemand weiß, was ich mit dem Code machen soll, damit das Programm funktioniert. Der Code und die Beschreibung unterSchreiben Sie ein Programm, das die Werte für zwei Variablen auf einen bestimmten Wert bestimmt
Die Idee hinter diesem Programm ist es, den Wert von zwei Doppel a
und t
zu finden, wo, wenn sie multipliziert wurden, geben sie einen bestimmten Wert. Also, wenn der angegebene Wert 4 war das Programm die Werte von a
und t
zu finden, wo, wenn sie multipliziert wurden sie in einem Bereich von 5 bis 10. 4. Die Variable t
ist
Ich schrieb den folgenden Code geben würde, in diesem
int main(void)
{
double a = 0.01;
double t = 5;
while(1){
if(t * a != 4){
t = t + 0.01;
if(t > 10){
t = 5;
a = a + 0.01;
}
}
else if (t * a == 4){
break;
}
}
printf("%f %f", t, a);
return 0;
}
der Code scheint nicht, wenn ich i 0,01 unter Verwendung der Werte zu erhöhen, versuchen zu arbeiten, obwohl es, wenn der Wert des Zuwachses arbeitet 1. ist weiß, dass ich den Grund, warum dies geschieht, aber wie würde ich dieses Problem beheben Programmcode oder gibt es andere Möglichkeiten, wie ich den Code schreiben könnte ?. Der Code scheint nur Schleife für immer
Beachten Sie, dass * "Der Code scheint nicht zu funktionieren" * ist nie ausreichend Problembeschreibung. Was ist passiert? Was hast du erwartet? – user694733
Was funktioniert nicht? Können Sie sagen, was Sie erwarten und was Sie bekommen? –
't * a' könnte mich nie _exactly_ 4. Wenn Sie den Artikel" Ist Gleitkomma-Mathe gebrochen "gelesen haben, sollten Sie das wissen. –