Conversões de tipos de ponto flutuante
A float valor convertido em um double ou long double, ou um double convertido em um long double, passa por nenhuma alteração no valor.A double valor convertido em um float valor é representado exatamente, se possível.Precision pode ser perdido se o valor não pode ser representado exatamente.Se o resultado está fora do intervalo, o comportamento é indefinido.Consulte limites sobre constantes de ponto flutuante para o intervalo de tipos de ponto flutuante.
Um valor flutuante é convertido para um valor inteiro, convertendo primeiro para um longo, depois do longo valor ao valor integral específico.A parte decimal do valor flutuante é descartada na conversão em um longo.Se o resultado ainda é muito grande para caber em um longo, o resultado da conversão é indefinido.
Específicos do Microsoft
Ao converter uma double ou long double o número de ponto flutuante para um menor número de ponto flutuante, o valor da variável de ponto flutuante será truncado em direção a zero quando ocorrerá um estouro negativo.Um estouro causará um erro de tempo de execução.Observe que o compilador Microsoft C mapeia long double digitar double.
Específicos do Microsoft final
A tabela a seguir resume as conversões de tipos de flutuante.
Conversões de tipos de ponto flutuante
From |
Para |
Método |
---|---|---|
float |
char |
Converter em longo; converter longo parachar |
float |
short |
Converter em longo; converter longo para curto |
float |
long |
Truncar no ponto decimal.Se o resultado é muito grande para ser representado como longo, resultado é indefinido. |
float |
unsigned short |
Converter em longo; convert long to unsigned short |
float |
unsigned long |
Converter em longo; convert long to unsigned long |
float |
double |
Alterar a representação interna |
float |
long double |
Alterar a representação interna |
double |
char |
Converter em float; converter float parachar |
double |
short |
Converter em float; converter float para curto |
double |
long |
Truncar no ponto decimal.Se o resultado é muito grande para ser representado como longo, resultado é indefinido. |
double |
unsigned short |
Converter em longo; converter longo para unsigned short |
double |
unsigned long |
Converter em longo; convert long to unsigned long |
double |
float |
Representar como um float.Se double valor não pode ser representada exatamente como float, ocorre a perda de precisão.Se valor for muito grande para ser representado como float, o resultado é indefinido. |
long double |
char |
Converter em float; converter float parachar |
long double |
short |
Converter em float; converter float para curto |
long double |
long |
Truncar no ponto decimal.Se o resultado é muito grande para ser representado como longo, resultado é indefinido. |
long double |
unsigned short |
Converter em longo; convert long to unsigned short |
long double |
unsigned long |
Converter em longo; convert long to unsigned long |
long double |
float |
Representar como um float.Se double valor não pode ser representada exatamente como float, ocorre a perda de precisão.Se valor for muito grande para ser representado como float, o resultado é indefinido. |
long double |
double |
O longodouble valor é tratado como double. |
Conversões de float, double, ou long double valores a unsigned long não são precisos, se o valor que está sendo convertido é maior do que o máximo positivo longo valor.