Was ist der beste Weg, um eine double
in eine int
zu konvertieren? Soll eine Besetzung verwendet werden?konvertieren double to int
Antwort
Sie können eine Umwandlung verwenden, wenn Sie das standardmäßige truncate-to-zero-Verhalten verwenden möchten. Alternativ können Sie auch Math.Ceiling
, Math.Round
, Math.Floor
usw. verwenden - obwohl Sie danach noch eine Besetzung benötigen.
Vergessen Sie nicht, dass der Bereich von int
viel kleiner ist als der Bereich von double
. Ein Cast von double
bis int
löst keine Ausnahme aus, wenn der Wert außerhalb des Bereichs von int
in einem ungeprüften Kontext liegt, während ein Aufruf an Convert.ToInt32(double)
wird. Das Ergebnis der Umwandlung (in einem ungeprüften Kontext) ist explizit undefiniert, wenn der Wert außerhalb des Bereichs liegt.
Ich frage mich, ob Convert.ToInt32 in 64-Bit-Maschine nicht mehr OK ist? – user496949
@user: Die Größe eines 'int' ist immer 32 Bit, unabhängig davon, ob Sie eine 32 oder 64 Bit Maschine verwenden. – Joren
Und doubles kann viel größer sein als sogar ein 64-Bit-Int. –
Ja, warum nicht?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Die Klasse Convert
funktioniert auch gut.
int someOtherInt = Convert.ToInt32(someDouble);
Convert.ToInt32
ist der beste Weg
Dies ist eine in der Regel unsichere Funktion, weil es einfach alles akzeptiert. –
zu konvertieren, wenn Sie Guss verwenden, das heißt, (int)SomeDouble
Sie den Bruchteil abgeschnitten wird. Das heißt, wenn SomeDouble
4.9999 wären, wäre das Ergebnis 4, nicht 5. Die Konvertierung in int rundet die Zahl nicht. Wenn Sie verwenden möchten Math.Round
Meine Wege Runden sind:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
Denkst du nicht, dass der dritte Weg unnötig komplex und langsam ist? –
Der dritte funktioniert nicht mit Doppelbögen mit Nachkommastellen. z. B. 'double_value = 0.1' –
Ich denke, Sie können Math.Floor verwenden. – lindexi
Ich denke, der beste Weg, Convert.ToInt32
ist. Hier
ist ein komplettes Beispiel
class Example
{
public static void Main()
{
double x, y;
int i;
x = 10.0;
y = 3.0;
// cast double to int, fractional component lost (Line to be replaced)
i = (int) (x/y);
Console.WriteLine("Integer outcome of x/y: " + i);
}
}
Wenn Sie die Nummer auf die engere ganze Zahl gehen Sie wie folgt runden möchten:
i = (int) Math.Round(x/y); // Line replaced
Der beste Weg ist einfach zu bedienen Convert.ToInt32
. Es ist schnell und auch richtig abgerundet.
Warum es komplizierter machen?
label8.Text = "" + years.ToString("00") + " years";
, wenn Sie wollen, dass es zu einem Etikett schicken, oder etwas, und Sie keine Bruchkomponente wollen, ist dies der beste Weg,
label8.Text = "" + years.ToString("00.00") + " years";
, wenn Sie mit nur 2 mögen, und es ist immer so
int myInt = (int) Math.Ceiling (myDouble);
- 1. Int konvertieren in Swift Double
- 2. Double to Int Konvertierung hinter der Szene?
- 3. Fehler 'Kann Double nicht in Int' konvertieren
- 4. Umwandlung int float/double
- 5. Konnte 'Double (*) [5]' nicht in 'Double' konvertieren
- 6. Convert double to uint8_t *
- 7. Lua string to int
- 8. Double konvertiert nicht zu einem int
- 9. DStream [Double, Double] in RDD [(Double, Double)] konvertieren
- 10. C# string [] to int []
- 11. Kein passender Konstruktor für Farbe gefunden (int, int, int, double)
- 12. Java char array to int
- 13. Warum gibt int = int * double einen Fehler und int * = double nicht (in Java)?
- 14. #define to double - anderer Wert?
- 15. String in Double konvertieren
- 16. casting double to signed vs unsigned integer
- 17. Was (double (^) (int)) ist foofoo
- 18. Java Double to String Konvertierung ohne Formatierung
- 19. Wie erfolgt die Fließkommaumwandlung tatsächlich in C++ (double to float oder float to double)
- 20. TSQL DateTime to DateKey Int
- 21. Ungültige Double "" bei String zu Double to String Konvertierung
- 22. Wie int [] konvertieren int [,] - C#
- 23. konvertieren int std :: string
- 24. Konvertieren von Double in unsigned char?
- 25. Haskell: Konvertieren von Int String
- 26. Zeichenfolge in Double konvertieren - VB
- 27. Konvertieren von DateTime nach Double
- 28. Integer Konvertieren in Haskell Double
- 29. Was ist der Unterschied zwischen double a = a + int b und int a + = double b?
- 30. Ist int-> double-> int garantiert werthaltig?
definieren "am besten". hängt davon ab, ob du auf/abrunden möchtest, usw. – RPM1984
@ RPM1984: Definiere 'etc' :) –
@Armen - touche' :) Ist eigentlich egal - Skeet ist hier, nichts anderes zählt. – RPM1984