Duvida em C Sharp

.NET

C#

01/03/2025

using System;
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

Diego Sousa

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

01/03/2025

Não há nenhuma razão para isto ocorrer.

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
Anderson Gonçalves

Anderson Gonçalves

01/03/2025

Se você depurar você vai ver que está comparando um inteiro com um float, o programa está arredondando o seu 6,8 para 7 e ai daria aprovado, verifica se não é isso.
GOSTEI 0
Anderson Gonçalves

Anderson Gonçalves

01/03/2025

Eu fiz o seu exemplo aqui, o que está acontecendo é o seguinte:

- 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
POSTAR