Udostępnij za pośrednictwem


Konwersje z typów zmiennoprzecinkowych

Wartość typu float konwertowana na double lub long double albo double konwertowane na long double, nie podlega zmianom wartości.Wartość double konwertowana na wartość float jest dokładnie reprezentowana, jeśli jest to możliwe.Precyzja może zostać utracona, jeśli wartość nie może być przedstawiona dokładnie.Jeśli wynik jest poza zakresem, zachowanie jest niezdefiniowane.Zobacz Limity na stałych zmiennoprzecinkowych, aby zapoznać się z zakresem typów zmiennoprzecinkowych.

Wartość zmiennoprzecinkowa jest konwertowana na wartość całkowitą przez konwersję najpierw na long, następnie z long na określoną wartość całkowitą.Część dziesiętna wartości zmiennoprzecinkowej zostaje odrzucona podczas konwersji na long.Jeśli wynik jest nadal zbyt duży, aby pasował do long, wynik konwersji jest niezdefiniowany.

Specyficzne dla firmy Microsoft

Podczas konwertowania liczby zmiennoprzecinkowej double lub long double na mniejszą liczbę zmiennoprzecinkową, wartość zmiennoprzecinkowa zmiennej jest obcinana w kierunku zera po wystąpieniu niedomiaru.Przepełnienie powoduje błąd czasu wykonania.Należy zauważyć, że kompilator Microsoft C mapuje long double na typ double.

KONIEC informacji specyficznych dla firmy Microsoft

W poniższej tabeli podsumowano konwersje z typów zmiennoprzecinkowych.

Konwersje z typów zmiennoprzecinkowych

Z

Do

Metoda

typ float

char

Konwertuje na long; konwertuje long na char

typ float

short

Konwertuje na long; konwertuje long na short

typ float

long

Obcina na przecinku dziesiętnym.Jeśli wynik jest zbyt duży, aby go reprezentować jako long, wynik jest niezdefiniowany.

typ float

niepodpisany short

Konwertuje na long; konwertuje long na unsigned short

typ float

unsigned long

Konwertuje na long; konwertuje long na unsigned long

typ float

double

Zamienianie wewnętrznej reprezentacji

typ float

long double

Zamienianie wewnętrznej reprezentacji

double

char

Konwertuje na float; konwertuje float na char

double

short

Konwertuje na float; konwertuje float na short

double

long

Obcina na przecinku dziesiętnym.Jeśli wynik jest zbyt duży, aby go reprezentować jako long, wynik jest niezdefiniowany.

double

niepodpisany short

Konwertuje na long; konwertuje long na unsigned short

double

unsigned long

Konwertuje na long; konwertuje long na unsigned long

double

typ float

Reprezentuje jako float.Jeśli wartość double nie może być reprezentowana dokładnie tak, jak float, występuje utrata precyzji.Jeśli wartość jest zbyt duża, aby być reprezentowana jako float, wynik jest niezdefiniowany.

long double

char

Konwertuje na float; konwertuje float na char

long double

short

Konwertuje na float; konwertuje float na short

long double

long

Obcina na przecinku dziesiętnym.Jeśli wynik jest zbyt duży, aby go reprezentować jako long, wynik jest niezdefiniowany.

long double

niepodpisany short

Konwertuje na long; konwertuje long na unsigned short

long double

unsigned long

Konwertuje na long; konwertuje long na unsigned long

long double

typ float

Reprezentuje jako float.Jeśli wartość double nie może być reprezentowana dokładnie tak, jak float, występuje utrata precyzji.Jeśli wartość jest zbyt duża, aby być reprezentowana jako float, wynik jest niezdefiniowany.

long double

double

Wartość long double jest traktowana jako double.

Konwersje z wartości float, double lub long double na unsigned long nie są dokładne, jeśli konwertowana wartość jest większa niż maksymalna dodatnia wartość long.

Zobacz też

Koncepcje

Konwersje przypisań