Fórum Duvida em C Sharp #623678
01/03/2025
0
class ex033
{
static void Main()
{
float nota = 0;
Console.Write("Digite a nota: ");
nota = float.Parse(Console.ReadLine());
if (nota > 7)
{
Console.WriteLine("Aprovado");
} else
{
Console.WriteLine("Reprovado");
}
}
}
Porque quando eu boto a nota 6.8 ele da aprovado, sendo que 6,8 não é maior que 7.

Diego Sousa
Curtir tópico
+ 0Posts
01/03/2025
Arthur Heinrich
Quando se trabalha com ponto flutuante, temos que lembrar que valores fracionários do sistema decimal não são bem representados em binário e podemos observar problemas em comparações como a sua.
Números inteiros são bem representados. Se você fornecer o valor 7 (inteiro), o valor de nota deveria ser de exatamente 7. Porém, como você compara a nota com o símbolo de "maior que", o programa deveria retornar "Reprovado".
Quando um número não inteiro é imputado, podem ocorrer erros de arredondamento. O valor 6.8, por exemplo, pode ser representado como 6.79999xxx ou 6.80000xxx, devido ao erro causado pela precisão da variável.
Porém, mesmo com esse erro de arredondamento, 6.8 ainda é menor do que 7. A menos que, sua máquina esteja configurada para interpretar a vírgula como ponto decimal e, ao utilizar o ponto (6.8), o comando float.Parse() pode ter desconsiderado o ponto, interpretando 0 6.8 como 68, que é maior do que 7.
Teste usando a vírgula, para ver se dá erro de conversão, ou se passa, como Reprovado.
Gostei + 0
11/04/2025
Anderson Gonçalves
Gostei + 0
11/04/2025
Anderson Gonçalves
- Você está usando PONTO ao invés de VÍRGULA e ele está assumindo o valor de 68 quando você digita 6.8, tem que usar VÍRGULA ai dá certinho.
Espero ter ajudado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)