Was ist der beste Weg, um ein doublein ein umzuwandeln int? Sollte eine Besetzung verwendet werden?
etc.:)
Was ist der beste Weg, um ein doublein ein umzuwandeln int? Sollte eine Besetzung verwendet werden?
etc.:)
Antworten:
Sie können eine Umwandlung verwenden, wenn Sie das Standardverhalten zum Abschneiden gegen Null wünschen. Alternativ können Sie verwenden möchten Math.Ceiling, Math.Round, Math.Floorusw. - obwohl Sie noch eine Besetzung danach benötigen.
Vergessen Sie nicht, dass der Bereich von intviel kleiner ist als der Bereich von double. Ein Cast von doublebis intlöst keine Ausnahme aus, wenn der Wert intin einem ungeprüften Kontext außerhalb des Bereichs von liegt , während ein Aufruf von Convert.ToInt32(double)will. Das Ergebnis der Umwandlung (in einem nicht aktivierten Kontext) ist explizit undefiniert, wenn der Wert außerhalb des Bereichs liegt.
intbeträgt immer 32 Bit, unabhängig davon, ob Sie einen 32- oder 64-Bit-Computer verwenden.
intVal = System.Convert.ToInt32(System.Math.Floor(dblVal));
using System;oben in der Datei haben, an welchem Punkt es einfach sein könnteintVal = Convert.ToInt32(Math.Floor(dblVal));
usingAnweisungen zu informieren .
Wenn Sie also cast verwenden, werden (int)SomeDoubleSie den Bruchteil abschneiden. Das heißt, wenn SomeDouble4.9999 wäre , wäre das Ergebnis 4, nicht 5. Die Konvertierung in int rundet die Zahl nicht. Wenn Sie Rundungen verwenden möchtenMath.Round
Ja, warum nicht?
double someDouble = 12323.2;
int someInt = (int)someDouble;
Die Verwendung der ConvertKlasse funktioniert auch gut.
int someOtherInt = Convert.ToInt32(someDouble);
Convert.ToInt32 ist der beste Weg, um zu konvertieren
Hier ist ein vollständiges 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 Zahl auf die engere Ganzzahl runden möchten, gehen Sie wie folgt vor:
i = (int) Math.Round(x / y); // Line replaced
Meine Wege sind:
- Convert.ToInt32(double_value)
- (int)double_value
- Int32.Parse(double_value.ToString());
double_value = 0.1