Dmitry Fedoseev: ¿Qué es el 5? La normalización de un número de este tipo convierte todos los 9 en ceros, por lo que normalizar y luego descartar dará resultados erróneos.
¿Y si el número es 0,99999 y hay que dejar dos dígitos? Descarta el resto. Tenemos que conseguir 0,99. Así que lo normalizamos a tres dígitos, obtenemos 1,000, descartamos uno y obtenemos 1,00, pero no 0,99.
¿Y si el número es 0,99999 y hay que dejar dos dígitos? Descarta el resto. Tenemos que conseguir 0,99. Así que lo normalizamos a tres dígitos, obtenemos 1,000, descartamos uno y obtenemos 1,00, pero no 0,99.
Me recuerda a la anécdota del programador desaparecido. Y está sentado en un baño frío, con el champú en las manos y las instrucciones "enjabonar, aclarar, repetir".
Dmitry Fedoseev: Me recuerda a un chiste sobre un programador que ha desaparecido. Estaba sentado en una bañera fría, con champú en las manos y la instrucción "enjabonar, aclarar y repetir".
¿Por qué un lenguaje necesita tanta precisión: que el número (por ejemplo) "0,7" se almacene realmente como "0,69999..."?
¿Se utiliza esto realmente en alguna parte? Estoy acostumbrado a contar los números como en una calculadora, se muestra con precisión.
Sí, quizás la propia calculadora redondea algo, y no guarda los números exactos por sí misma...
¿Quién necesita utilizar cifras tan aproximadas con fracciones infinitas en lugar de valores exactos?
Divídelo, obtén 0,7 y no te molestes en recortar o redondear :-)
¿Y si el número es 0,99999 y hay que dejar dos dígitos? Descarta el resto. Tenemos que conseguir 0,99. Así, según el algoritmo sugerido anteriormente, normalizar a tres dígitos, obtenemos 1,000, descartar uno y obtener 1,00, pero no 0,99.
intente obtener un resultado de0,99999999999999999
El diablo está en la mezcla... 2,6, por supuesto.
Es hora de ir a la cama.
¿Qué es el 5? La normalización de un número de este tipo convierte todos los 9 en ceros, por lo que normalizar y luego descartar dará resultados erróneos.
DoubleToString(0.99999,5)
¿Y si el número es 0,99999 y hay que dejar dos dígitos? Descarta el resto. Tenemos que conseguir 0,99. Así que lo normalizamos a tres dígitos, obtenemos 1,000, descartamos uno y obtenemos 1,00, pero no 0,99.
¿Y si el número es 0,99999 y hay que dejar dos dígitos? Descarta el resto. Tenemos que conseguir 0,99. Así que lo normalizamos a tres dígitos, obtenemos 1,000, descartamos uno y obtenemos 1,00, pero no 0,99.
Sí... y de repente tenemos 0,999999 en lugar de 0,999999.
Me recuerda a un chiste sobre un programador que ha desaparecido. Estaba sentado en una bañera fría, con champú en las manos y la instrucción "enjabonar, aclarar y repetir".
¿Y si el número es 0,99999 y hay que dejar dos dígitos? Descarta el resto. Tenemos que conseguir 0,99. Así, según el algoritmo sugerido anteriormente, normalizar a tres dígitos, obtenemos 1,000, descartar uno y obtener 1,00, pero no 0,99.
intente obtener un resultado de0,99999999999999999
X = 0.99999999999999999
10*X = 10*0.99999999999999999
10*X-X = 10*0,9999999999999-0,99999999999
9*X = 9*0.99999999999999999
obtenemos 9*X = 9 o X es igual a 1 (uno)
v1 = (1/3) = 0,33333333 | v2 = 3*(1/3) = 1,00000000
o 0,9999999999999 = 1,0
v1 (1.00000000) >= 1.0