Actualmente estoy leyendo Code Complete por Steve McConnell, específicamente página 295 en números de punto flotante.Incrementos de impresión de 0.1 en C#
cuando me encontré con el siguiente código:
double nominal = 1.0;
double sum = 0.0;
for (int i = 0; i < 10; i++)
{
sum += 0.1;
Console.WriteLine("sum: " + sum.ToString());
}
if (equals(nominal,sum))
{
Console.WriteLine("Numbers are the same");
}
else
{
Console.WriteLine("Numbers are different");
}
Tengo una impresión de 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0 números son diferentes
¿Cómo es que no lo hice? ¿obtener la salida que se supone que va a pasar? es decir: 0,1 0,2 0.30000000000000004 0,4 0,5 0,6 0,7 0.79999999999999999 0.89999999999999999 0.99999999999999999 números son diferentes
son los números de C# de redondeo cuando lo haga una conversión implícita de doble a cadena? Creo que sí, porque cuando depuro la aplicación y paso por el ciclo for, puedo ver los números decimales que no se terminan. ¿Qué piensas? ¿Estoy en lo correcto o incorrecto?
Ahh gracias. Debería haber sido muy preciso con las salidas que te he dado. Cuando di números decimales largos como 0.79999999999999999, no estaba prestando atención a la cantidad de dígitos que estaba usando. – burnt1ce