0.7+0.1 no JS: float e dinheiro em ticket | guia prático
Por que 0.7+0.1 no JavaScript não dá 0.8 limpo: floats priorizam espaço e sacrificam precisão. O que isso muda ao salvar preço de ticket em centavos
Resposta direta
Dinheiro em float é armadilha clássica; o episódio liga o bug visual ao design de preço em centavos. Ticket Price preço do ingresso, cara, qual é a chance de a gente fazer cálculo com isso? Da gente ter que gerar um relatório, da gente ter que somar dois ticket price, da gente ter que subtrair.
O resultado estranho de 0.7 + 0.1
Alguém consegue me explicar por que dá esse resultado aqui? Por padrão, o JavaScript armazena esses números aqui como floats. O floats é um tipo numérico de dado que prioriza a otimização de espaço.
Então, ele aceita sacrificar precisão para ter uma otimização de espaço maior. Então, você precisa tomar muito cuidado ao trabalhar com casas decimais em linguagem de programação. Isso é um problema, turma, oriundo de linguagem de programação.
Então, eu não gosto de salvar números com ponto flutuante. Porque assim, se você tem um número que, cara, você vai salvar como ponto flutuante lá no seu banco. E você não vai fazer cálculos com ele na sua linguagem de programação.
Float: espaço vs precisão
Cara, tudo bem, pode salvar como ponto flutuante. Porque o problema tá quando você tenta fazer cálculo. Agora, se você vai fazer cálculos com isso, por exemplo, turma.
Ticket Price preço do ingresso, cara, qual é a chance de a gente fazer cálculo com isso? Da gente ter que gerar um relatório, da gente ter que somar dois ticket price, da gente ter que subtrair. Então, nesses casos, turma, o ideal é você armazenar inteiro.
Então, você usar um integer e salvar em centavos. Porque aí você não vai ter ponto flutuante. Você concorda que eu salvar 8 reais Ou a sua representação em centavos, 800.
Leitura útil
Dinheiro em float é armadilha clássica; o episódio liga o bug visual ao design de preço em centavos. Use o trecho acima como restrição, não como citação ornamental.
Por que ticket em centavos aparece
Cara, eu só preciso saber onde vai o ponto. Então eu posso salvar como 800 se eu saber que lá na frente o ponto vai aqui, concorda? Ou seja, eu posso salvar em 800 e quando eu for exibir esse cara lá no meu front-end, por exemplo, eu divido por 100.
Alguém consegue me explicar por que dá esse resultado aqui? Por padrão, o JavaScript armazena esses números aqui como floats. O floats é um tipo numérico de dado que prioriza a otimização de espaço. Então, ele aceita sacrificar precisão para ter uma otimização de espaço maior.
Então, você precisa tomar muito cuidado ao trabalhar com casas decimais em linguagem de programação. Isso é um problema, turma, oriundo de linguagem de programação. Então, eu não gosto de salvar números com ponto flutuante. Porque assim, se você tem um número que, cara, você vai salvar como ponto flutuante lá no seu banco.
Como persistir valores monetários
Alguém consegue me explicar por que dá esse resultado aqui? Por padrão, o JavaScript armazena esses números aqui como floats. O floats é um tipo numérico de dado que prioriza a otimização de espaço. Então, ele aceita sacrificar precisão para ter uma otimização de espaço maior.
Então, você precisa tomar muito cuidado ao trabalhar com casas decimais em linguagem de programação. Isso é um problema, turma, oriundo de linguagem de programação. Então, eu não gosto de salvar números com ponto flutuante. Porque assim, se você tem um número que, cara, você vai salvar como ponto flutuante lá no seu banco.
E você não vai fazer cálculos com ele na sua linguagem de programação. Cara, tudo bem, pode salvar como ponto flutuante. Porque o problema tá quando você tenta fazer cálculo. Agora, se você vai fazer cálculos com isso, por exemplo, turma.
Testes que pegam o bug cedo
Alguém consegue me explicar por que dá esse resultado aqui? Por padrão, o JavaScript armazena esses números aqui como floats. O floats é um tipo numérico de dado que prioriza a otimização de espaço. Então, ele aceita sacrificar precisão para ter uma otimização de espaço maior.
Então, você precisa tomar muito cuidado ao trabalhar com casas decimais em linguagem de programação. Isso é um problema, turma, oriundo de linguagem de programação. Então, eu não gosto de salvar números com ponto flutuante. Porque assim, se você tem um número que, cara, você vai salvar como ponto flutuante lá no seu banco.
E você não vai fazer cálculos com ele na sua linguagem de programação. Cara, tudo bem, pode salvar como ponto flutuante. Porque o problema tá quando você tenta fazer cálculo. Agora, se você vai fazer cálculos com isso, por exemplo, turma.
Próximo passo
Escolha uma métrica (tempo, retries, conversão ou qualidade aceita) e rode 7 dias antes de escalar o padrão.