| FAQ Lite | ||||||||||
| Outras Questões Técnicas | ||||||||||
|
||||||||||
#if 1 #include "/version/next/alpha/beta/test.hpp" // RIGHT! #else #include "\version\next\alpha\beta\test.hpp" // WRONG! #endif
| Note que você deve usar barras normais ("/") em todos os seus nomes de arquivos, não apenas em arquivos #include. |
| [ 34.2 ] C++ tem novas regras de escopo para controle de loops for? |
| Sim. O seguinte código já foi legal mas não é mais, porque o escopo de i agora esta apenas dentro do loop for: |
for (int i = 0; i < 10; ++i) {
// ...
if ( /* something weird */ )
break;
// ...
}
if (i != 10) {
// We exited the loop early; handle this situation separately
// ...
}
#include <iostream.h>
main()
{
float a = 1000.43;
float b = 1000.0;
cout << a - b << '\n';
}
| Em uma implementação qualquer de C++, o código acima
imprime 0.429993. Justificativa: Frustração com arredondamentos, truncamentos e aproximações não é realmente um problema do C++; é um problema da ciência da computação. Contudo, as pessoas continuam perguntando sobre esse assunto para comp.lang.c++, o que se segue é a reprodução literal de uma resposta a essa questão. Resposta: Ponto flutuante é uma aproximação. O padrão IEEE para 32 bits suporta um bit para sinal, 8 bits para o expoente e 23 bits para a mantissa. Devido ao fato de que uma mantissa, representada em sistema binário, tem a forma 1.xxxxx... o primeiro dígito um é suprimido e você tem efetivamente 24 bits para mantissa. O número 1000.43 (e muitos, muitos outros) não é representado exatamente em ponto flutuante ou formato duplo. 1000.43 é, na realidade, representado pelo seguinte padrão de bits (o s indica a posição do bit de sinal, e's indicam as posições do expoente, e os m's indicam as posições da mantissa): |
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm 01000100011110100001101110000101
| A mantissa é 1111101000.01101110000101 ou 1000 + 7045/16384. A fração é 0.429992675781. Com 24 bits de mantissa você tem uma precisão de 1 parte em 16M para ponto flutuante. O tipo double propicia uma maior precisão porque tem 53 bits de mantissa. |
|
| | Home | Bookmarks | Universidades | Para Saber mais | Universidades | WEB Directory | Mapa do site | | |