Holen Sie sich die Nachkommastellen aus einer float-Zahl
Ich brauche, um die dezimale Teil aus einer float-Zahl, zum Beispiel:
float x = 18.30;
Ich brauche einen Weg, um die '.30' in einem anderen Schwimmer.. also ich will einen float-gleich, um 18.30 Uhr, und ein weiterer, gleich .30
Irgendwelche Ideen?
InformationsquelleAutor der Frage newton_guima | 2012-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ob es eine Funktion gibt, die genau das, wie Sie wollen, aber Sie können diese verwenden:
InformationsquelleAutor der Antwort Thiem Nguyen
Akzeptierte Antwort oben (x - floor(x)) funktioniert für positive zahlen, aber nicht das richtige für negative zahlen. Verwenden Sie trunc() statt:
Aber die fmod () - Lösung ist die eins-zu-verwenden Sie, wenn Sie mich Fragen:
InformationsquelleAutor der Antwort JKvr
Den
modf()
Funktion tut dies mehr direkt alsfmodf()
.InformationsquelleAutor der Antwort Ken Thomases
Gibt es eine Familie von fmod Funktionen, z.B. fmod(18.30 Uhr, 1.0), fmodf(18.30 Uhr, 1.0), etc
InformationsquelleAutor der Antwort gbulmer
Hinweis: verwenden Sie modf oder fmod wie bereits in anderen Antworten.
Aber nicht erwarten, dass genau die gleiche Anzahl wie atof("0.30") - wie Sie Ihre Anfrage gleich schlägt.
Tatsächlich passiert es, dass atof("18.30") ist der nächste float atof("18.0") + atof("0.30"), aber dieser Vorgang ist nicht genau, es ist ein Rundungsfehler, als würde jede Summe, die von atof("0.30") mit einer ganzen Zahl > 0.
Also wenn Sie subtrahieren wieder die ganzzahligen Teil, es gibt keinen Grund zu finden, atof("0.30") zurück, die Sie nur finden etwas in der Nähe atof("0.30").
Ausgedrückt in Squeak/Pharo Smalltalk (doppelte Genauigkeit verwendet hier)
gibt
Aber:
gibt
InformationsquelleAutor der Antwort aka.nice
x=3.5
y=parseInt(3.5)
fraction_part =( x-y );
InformationsquelleAutor der Antwort Loki Chandu
Die beste Möglichkeit, die ich gefunden mit der Objective-C-Variablentypen ist wie folgt:
Folgenden sind die Folge, wenn Sie ausgeführt:
InformationsquelleAutor der Antwort Abdurrahman Mubeen Ali