Dmitry Fedoseev: O que é 5? A normalização de tal número transforma todos os 9's em zeros, então a normalização e depois o descarte darão resultados errados.
Bem, e se o número for 0,99999 e você tiver que deixar dois dígitos? Descarte o resto. Precisamos de 0,99. Assim, de acordo com o algoritmo sugerido acima, normalizar para três dígitos, recebemos 1.000, descartar um e receber 1,00, mas não 0,99.
Bem, e se o número for 0,99999 e você tiver que deixar dois dígitos? Descarte o resto. Precisamos de 0,99. Assim, normalizamos para três dígitos, obtemos 1.000, descartamos um e obtemos 1,00, mas não 0,99.
Isso me lembra a anedota sobre o programador desaparecido. E ele está sentado em um banho frio, xampu em suas mãos com as instruções "sabonete, enxágüe, repita".
Dmitry Fedoseev: Isso me lembra uma piada sobre um programador que desapareceu. Ele estava sentado em um banho frio, xampu em suas mãos com a instrução "sabonete, enxágüe e repita".
Por que uma linguagem precisa de tal precisão: que o número (por exemplo) "0,7" seja realmente armazenado como "0,69999..."?
Isto é realmente usado em algum lugar? Estou acostumado a contar números como em uma calculadora, ela mostra com precisão.
Sim, talvez a calculadora em si dê a volta a algo, e não armazene os números exatos em si.
Quem precisa usar esses valores aproximados com frações infinitas ao invés de valores exatos?
Divida, obtenha 0,7 e não se preocupe com o corte ou arredondamento :-)
Bem, e se o número for 0,99999 e você tiver que deixar dois dígitos? Descarte o resto. Precisamos de 0,99. Assim, de acordo com o algoritmo sugerido acima, normalizar para três dígitos, recebemos 1.000, descartar um e receber 1,00, mas não 0,99.
tente obter um resultado de0,99999999999999999999999
O diabo está na mistura... 2.6, é claro.
É hora de dormir.
O que é 5? A normalização de tal número transforma todos os 9's em zeros, então a normalização e depois o descarte darão resultados errados.
DoubleToString(0,99999,5)
Bem, e se o número for 0,99999 e você tiver que deixar dois dígitos? Descarte o resto. Precisamos de 0,99. Assim, de acordo com o algoritmo sugerido acima, normalizar para três dígitos, recebemos 1.000, descartar um e receber 1,00, mas não 0,99.
Bem, e se o número for 0,99999 e você tiver que deixar dois dígitos? Descarte o resto. Precisamos de 0,99. Assim, normalizamos para três dígitos, obtemos 1.000, descartamos um e obtemos 1,00, mas não 0,99.
Sim... e de repente temos o número 0,99999999 em vez de 0,99999999.
Isso me lembra uma piada sobre um programador que desapareceu. Ele estava sentado em um banho frio, xampu em suas mãos com a instrução "sabonete, enxágüe e repita".
Bem, e se o número for 0,99999 e você tiver que deixar dois dígitos? Descarte o resto. Precisamos de 0,99. Assim, de acordo com o algoritmo sugerido acima, normalizar para três dígitos, recebemos 1.000, descartar um e receber 1,00, mas não 0,99.
tente obter um resultado de0,99999999999999999999999
X = 0.99999999999999999
10*X = 10*0.99999999999999999
10*X-X = 10*0,999999999999999999999-0,99999999999999999
9*X = 9*0.99999999999999999
obtemos 9*X = 9 ou X igual a 1 (um)
v1 = (1/3) = 0,33333333 | v2 = 3*(1/3) = 1,00000000
ou 0,9999999999999999999 = 1,0
v1 (1.00000000) >= 1.0