Questão 67219

Tecnologia da Informação · 2025

Questão

ID 67219

Disciplina: Tecnologia da Informação

Assuntos: Conceitos Básicos de Memória, Unidades de Medidas Digitais (Bit, Bytes, MB, GB Etc.)

Ano: 2025 Banca: PERFIL - ENADE Órgão: Terceiro Simulado Pnd


Um professor de Organização e Arquitetura de Computadores está explicando como os números de ponto flutuante (como `float` ou `double`) são representados na memória do computador, usando o padrão IEEE 754. Ele quer que seus alunos compreendam que essa representação é uma aproximação e tem limitações que podem levar a resultados inesperados em cálculos. Ele explica: "O padrão IEEE 754 representa um número de ponto flutuante dividindo os bits em três partes: um **sinal** (positivo ou negativo), um **expoente** (que determina a magnitude do número, ou a posição da 'vírgula' binária) e uma **mantissa** (ou significando, que representa os dígitos significativos do número). Como o número de bits para o expoente e a mantissa é finito, nem todos os números reais podem ser representados com exatidão. Isso significa que operações aritméticas com números de ponto flutuante podem sofrer de pequenos erros de arredondamento. Em muitas aplicações isso não é um problema, mas em cálculos científicos ou financeiros, esses pequenos erros podem se acumular e levar a resultados significativamente incorretos." Para demonstrar isso de forma prática, ele pede aos alunos para executarem o seguinte trecho de código em Python e analisarem o resultado:

`resultado = 0.1 + 0.2` `print(resultado)` `print(resultado == 0.3)`

Qual será a saída do código e qual o conceito fundamental que ele ilustra?

I. A primeira linha imprimirá `0.30000000000000004`. Isso ocorre porque os números 0.1 e 0.2 não podem ser representados com exatidão em binário, assim como 1/3 não pode ser representado com exatidão em decimal (0.333...). A soma de suas aproximações binárias resulta em um número ligeiramente diferente de 0.3.

II. A segunda linha imprimirá `False`. Devido ao erro de representação de ponto flutuante, o resultado da soma `0.1 + 0.2` não é exatamente igual à representação binária de `0.3`, fazendo com que a comparação de igualdade direta falhe.

III. Este comportamento demonstra por que, ao comparar números de ponto flutuante, nunca se deve usar o operador de igualdade direta (`==`). Em vez disso, deve-se verificar se a diferença absoluta entre os dois números é menor que uma pequena tolerância (um 'epsilon').

É correto o que se afirma em:

Alternativas da questão 67219
Pular para o conteúdo principal