Beispiel: Wenn ich 7.2828 habe, möchte ich nur die 2828 als Ganzzahl bekommen.Kann ich den Floating-Teil eines Double in eine ganze Zahl konvertieren (ohne String-Konvertierungen)?
Antwort
Dezimal ist dein Freund ...
Konvertieren Sie Ihre Zahl in eine Dezimalzahl und dann das tun.
decimal d = (decimal)7.2828;
int val = decimal.GetBits(d - decimal.Truncate(d))[0];
die nette Sache über eine Dezimalzahl ist, dass es die val als int speichert und speichert dann nur eine Kommaposition.
Wenn d
der ursprüngliche Wert ist, tun Sie einfach Folgendes.
((int)(d * 10000)) % 10000
ist nicht speziell für diese Nummer. wenn Sie die Anzahl der Ziffern unter dem Punkt nicht kennen. 10000 funktioniert nicht. – jmayor
In C++ sollten Sie static_cast verwenden, um double in int zu konvertieren. Der endgültige Code sollte wie folgt aussehen: static_cast
JIa3ep, die Frage ist mit C# markiert. (Eigentlich, aus irgendeinem Grund, war die Frage ursprünglich für Java :-)). – avakar
In C++ verwenden double modf(double, double *)
:
double value;
double fractional_part;
double integer_part= modf(value, &fractional_part);
int fractional_part_as_integer= fractional_part * 10000; // insert appropriate scale here.
Ich glaube nicht, Sie können. Die meisten CPUs können 7.2828 nicht als Double darstellen (IBM Mainframes sind die Ausnahme). Der Grund ist, dass sie das Doppelte als eine Summe von Potenzen von 2 darstellen. Der "7" -Teil ist einfach: 1 + 2 + 4. Das Fracational Bit ist härter: 0,25 + 0,0,03125 + 0,0009765625 ..... - eine unendliche Sequenz. Aus praktischen Gründen ist diese Sequenz abgeschnitten. Und das resultierende Doppelte wird nahe 7.2828 sein. Vielleicht 7.282800000000001245. Dies passt wahrscheinlich nicht in eine (32 Bit) Ganzzahl.
- 1. Konvertieren eine ganze Zahl base36
- 2. Spark SQL: Konvertieren eines Wochentagsnamens in eine ganze Zahl
- 3. ganze Zahl auf eine Darstellung Bit konvertieren
- 4. Keine Dezimalstellen angezeigt, wenn double eine ganze Zahl ist?
- 5. Wie kann ich ein Datum in eine ganze Zahl umwandeln?
- 6. konvertieren eine ganze Zahl in eine Zeichenfolge in Erlang
- 7. Ein Double auf die nächste ganze Zahl aufrunden
- 8. Wie testen, ob ein Double eine ganze Zahl ist
- 9. Konvertieren rgba Werte in eine ganze Zahl in Javascript
- 10. Konvertieren einer Ein-Objekt-Liste in eine ganze Zahl
- 11. Konvertieren einer Zeichenfolge in eine ganze Zahl unter Android
- 12. Wie ziehe ich eine ganze Zahl aus einem NSDictionary und lege sie in eine ganze Zahl?
- 13. Konvertieren von ls Ausgabe in eine ganze Zahl
- 14. konvertieren eine ganze Zahl in einen String seiner ASCII-Werte
- 15. R konvertieren 2 Bytes von Rohdaten in eine ganze Zahl
- 16. eine ganze Zahl in Xslt
- 17. Wie wandle ich eine ganze Zahl in eine Zeichenfolge um?
- 18. Umwandlung einer Elixir-Zahl in Exponentialschreibweise in eine ganze Zahl
- 19. Kann ich den C-Preprocssor verwenden, um eine ganze Zahl in eine Zeichenkette umzuwandeln?
- 20. String in Double konvertieren
- 21. Konvertieren einer Ziffernfolge in eine ganze Zahl, Speichern des Ergebnisses
- 22. Kann ich bestimmte Bits eine ganze Zahl in R angeben?
- 23. Increment eine ganze Zahl
- 24. Umwandlung in eine urllib.request auf eine ganze Zahl
- 25. Wie kann ich in Java eine Zeichenfolge in ein Double (nicht Double) konvertieren?
- 26. Wie kann ich eine genaue ganze Zahl von Fließkommazahl erhalten?
- 27. Konvertiere die 8-Bit-Zahl eines Chars in eine ganze Zahl
- 28. Eine Zeichenfolge in eine ganze Zahl aufteilen
- 29. Viele ganze Zahlen in eine große ganze Zahl packen
- 30. Wie konvertiere ich einen Teil eines Python-Tupels (Byte-Array) in eine ganze Zahl
Ich weiß, das ist ein Duplikat (ich habe es irgendwann beantwortet), aber Sie erkennen, 7,28 und 7,0028 werden beide mit einer Antwort von 28 enden, richtig? Sie werden keine Ahnung haben, was das ursprüngliche schwimmende Teil war. –
können Sie klären, wie Sie diese beiden Zahlen behandelt werden möchten: 7.02828 und 7.000002828 –
Wie möchten Sie, dass Leute wie 0,000000000125657542619998 behandelt werden? – MartW