dieser Code gegeben, dass mein Professor uns in einer Prüfung gab, die bedeutet, dass wir den Code noch verwenden Sie die Funktion aus anderen Bibliotheken nicht ändern können (außer stdio.h):Von einem Schwimmer auf eine ganze Zahl
float x;
(suppose x NOT having an integer part)
while (CONDITION){
x = x*10
}
I haben Finden Sie die Bedingung , die sicherstellt, dass x keine gültige Zahl rechts vom Dezimalpunkt hat nicht auf die Probleme der Genauigkeit einer Gleitkommazahl (Nach dem Komma müssen wir nur Nullen haben). Ich habe versucht, diesen Zustand:
while ((fmod((x*10),10))){
X = X*10
}
printf(" %f ",x);
Beispiel:
INPUT x=0.456; --------> OUTPUT: 456.000
INPUT X=0.4567;--------> OUTPUT; 4567.000
It is important to be sure that after the decimal point we don't have any
significant number
Aber ich hatte math.h Bibliothek enthalten, aber mein Professor erlaubt uns nicht, es in diesem speziellen Fall zu verwenden (ich bin nicht sogar erlaubt (lang) zu benutzen, da wir es nie in der Klasse gesehen haben).
Also, was ist die Bedingung, die das Problem ohne diese Bibliothek richtig lösen?
Diese Regel macht keinen Sinn, da Fließkomma nicht genau die meisten Zahlen darstellen können und werden so viele Dezimalstellen haben, wie es insgesamt Präzision ist. – 2501
Sie könnten [Float-Typ] (https://en.wikipedia.org/wiki/IEEE_754-1985t) studieren und einige Tests an internen Bits durchführen – purplepsycho
_Ich darf nicht einmal (long) verwenden, da wir nie gesehen haben es in der Klasse_ Das macht keinen Sinn .... Cast ist der einfachste Weg, dies zu tun, obwohl, wie @ 2501 bereits schrieb, nicht korrekt ist. – LPs