Primeiro, escreva uma demonstração para reproduzir o problema. Estou usando um ambiente de teste online JS [aberto]
Reescreva a função DisplayNum ()
função displayNum () {var num = 22,77; alerta (num + 10);}Clicando nos resultados do botão Mostrar mostram 32.76999999999996 N Decimais aparecem.
Nem todos os números terão esse fenômeno, exceto 22,99 2.777, parece que esses números não são especiais.
Eu verifiquei algumas informações. Um é o bug no cálculo do ponto flutuante JS e o outro está relacionado à conversão final do computador em cálculo binário. No entanto, por que nem todos os decimais têm esse fenômeno? Eu não sei no momento. Eu irei mais fundo se tiver tempo.
Existem duas soluções agora. O primeiro é usar o método JS. Pessoalmente, acho que esse método terá alguns problemas na precisão dos dados. Se os requisitos de precisão dos dados não forem altos, você poderá usá -los. O segundo método é escrever seu próprio método de operação JS.
A seguir, é apresentada uma função de adição personalizada. Adicionar esse método evitará os problemas acima.
função addNum (num1, num2) {var sq1, sq2, m; tente {sq1 = num1.toString (). split (".") [1] .Length;} catch (e) {sq1 = 0;} try {sq2 = num2.tostring (). Catch (e) {sq2 = 0;} m = math.pow (10, math.max (sq1, sq2)); retornar (num1 * m + num2 * m) / m;}Obviamente, também pode ser escrito como alerta ((num * 3+10 * 3) /3); Dessa forma, não haverá mais decimais em n.
alerta ((num * 3+10 * 3) /3); e alerta (num+10); são diferentes de alerta (num+10); Essas duas maneiras de escrever computadores para converter em operações binárias na camada inferior. Talvez este seja o motivo dos problemas acima.
O artigo acima sobre o JS decimal calculando o ponto decimal e exibir várias decimais é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.