W tej linii:
double i = 0xF0000000;
dosłowne jest typu uint
, ale to jest niejawnie konwertowane na double
. Podczas rozmowy telefonicznej i.GetType()
które zawsze druku System.Double
, ponieważ zmienna jest typu double
na ... tylko rodzaj wartości może pomieścić jest double
.
Zauważ, że ta konwersja do double
oznacza, że można stracić precyzji, jeśli zaczynasz z long
lub ulong
. Na przykład:
using System;
public class Program
{
static void Main()
{
long x = 123456789;
double y = 123456789;
Console.WriteLine(x.ToString("n"));
Console.WriteLine(y.ToString("n"));
}
}
nadrukami
123,456,789,012,345,678.00
123,456,789,012,346,000.00
Uwaga jak ostatnie kilka cyfr są tracone w double
, ponieważ niejawna konwersja z long
do double
może stracić precyzji. (Obie mają 64 bity dostępne, ale tylko w double
niektóre z tych bitów są stosowane dla mantysy).
To nie jest problem dla int
lub uint
literałów, ale warto mieć świadomość, że nawrócenie się dzieje.
Nie ma typu "var". –