O c ++ dupla precisão variável de ponto flutuante
A variável de ponto flutuante padrão em C ++ é o seu irmão maior, o dupla precisão
Conteúdo
- Resolver o problema de truncamento
- Video: 017 variáveis de ponto flutuante float ou double
- Video: aula 2 - cálculo numérico: aritmética de ponto flutuante - resolução de exercícios
- Video: licenciatura em computação - notação ponto flutuante (prof gilberto farias)
- Quando um número inteiro não é um número inteiro
- Video: complemento de 1 e 2 e ponto flutuante
dValue1 duplo-duplo dValue2 = 1.5-
As limitações do int variável em C ++ são inaceitável em algumas aplicações. Felizmente, C ++ entende números decimais que têm uma parte fracionária. (Os matemáticos chamam estes numeros reais.) Em C ++, números decimais são chamados números de ponto flutuante ou simplesmente flutuadores. Isso ocorre porque o ponto decimal pode flutuar em torno da esquerda para a direita para lidar com valores fracionários.
variáveis de ponto flutuante vêm em dois sabores básicos em C ++. A pequena variedade é declarado usando a palavra-chave flutuador do seguinte modo:
flutuar fValue1 - // declarar uma pointfloat flutuante fValue2 = 1.5- // inicializa-lo na declaração
Resolver o problema de truncamento
Para ver como a Duplo corrige o nosso problema truncagem, considere a média de três variáveis de ponto flutuante dValue1, dValue2, e dValue3 dada pela fórmula
Video: 017 Variáveis de ponto flutuante Float ou Double
duplo DAVERAGE = dValue1 / 3.0 + dValue2 / 3.0 + dValue3 / 3.0-
Suponha, mais uma vez, os valores iniciais de 1,0, 2,0, e 2,0. Isso torna a expressão apenas dado aqui como equivalente a
duplo DAVERAGE = 1,0 / 3,0 + 2,0 / 3,0 + 2,0 / 3.0-
que é, por sua vez, equivale a
double DAVERAGE = 0,333 ... + 0,6666 ... + 0,6666 ...-
resultando em um valor final de
Video: Aula 2 - Cálculo Numérico: Aritmética de Ponto Flutuante - Resolução de Exercícios
duplo DAVERAGE = 1,666 ...-
As expressões anteriores são escritos como se não houvesse um número infinito de par de seis após o ponto decimal. Na verdade, este não é o caso. A precisão de um duplo é limitado a cerca de 14 dígitos significativos. A diferença entre 1,666666666666 e 1 2/3 é pequeno, mas não zero.
Video: Licenciatura em Computação - Notação Ponto Flutuante (Prof Gilberto Farias)
Quando um número inteiro não é um número inteiro
C ++ que assume um número seguido por um ponto decimal é uma constante de ponto flutuante. Assim supõe-se que 2,5 é um ponto flutuante. Esta regra de ponto decimal é verdadeiro mesmo se o valor à direita do ponto decimal é zero. Assim 3.0 também é um ponto flutuante. A distinção entre 3 e 3,0 parece pequeno para você, mas não para C ++.
Video: Complemento de 1 e 2 e Ponto Flutuante
Na verdade, você não tem que colocar qualquer coisa à direita do ponto decimal. Assim, C ++ também vê 3. como um Duplo. No entanto, é considerado um bom estilo para incluir a 0 depois do ponto decimal para todas as constantes de ponto flutuante.
geeks de computador vai estar interessado em saber que as representações internas de 3 e 3,0 são totalmente diferentes (bocejo). Mais importante ainda, a constante int 3 é sujeito a int regras, ao passo que 3,0 é sujeito às regras da aritmética de ponto flutuante.
Assim, você deve tentar evitar expressões como as seguintes:
duplo dValue = 1,0-duplo dOneThird = dValue / 3-
Tecnicamente isso é o que é conhecido como um Modo misto expressão porque dValue é um Duplo mas 3 é uma int. Ok, C ++ não é um idiota total - ele sabe o que quer em um caso como este, por isso converte a 3 para a Duplo e executa aritmética de vírgula flutuante.
Há um nome para este pouco de magia: C ++ promove a int 3 para uma Duplo. C ++ também permite atribuir um resultado de ponto flutuante para um int variável:
int nValue = dValue / 3.0-
atribuir um Duplo para um int é conhecido como um rebaixamento.
compiladores alguns C ++ gerar um aviso quando a promoção de uma variável. compiladores Todos C ++ gerar um aviso (ou erro) quando rebaixar um resultado devido à perda de precisão.
Você deve adquirir o hábito de evitar de modo misto aritmética. Se você tiver que alterar o tipo de uma expressão, fazê-lo explicitamente usando um elenco, como no exemplo a seguir:
fn void (int nArg) {// calcula um terço dos nArg- usar um elenco para // promovê-lo a um flutuante pointdouble dOneThird = (double) nArg / 3.0 - // ... Função continua
A convenção de nomenclatura de começar variáveis duplas de precisão dupla com a letra d é usado aqui. Isso é apenas uma convenção. Você pode nomear suas variáveis de qualquer maneira que você gosta - C ++ não importa.