JavaScript multiplicando incorretamente, causando arredondamentos incorretos

Quando puxo os valores que quero multiplicar, eles são strings. Então eu os puxo, os analiso como flutuadores (para preservar as casas decimais) e os multiplic

LineTaxRate = parseFloat(myRate) * parseFloat(myQuantity) * parseFloat(myTaxRateRound);

Isso funcionou para 99% das minhas faturas, mas descobri um problema muito estranh

Quando multiplicado: 78 * 7 * 0,0725

JavaScript está retornando: 39.584999999999994

Quando você normalmente faz as contas em uma calculadora, é: 39.585

Quando tudo estiver dito e feito, pego esse número e o arredondo usando .toFixed (2)

Por que o Javascript está retornando esse número, não está arredondando para o valor desejado de: $ 39,59

Eu tentei Math.round () o total, mas continuo recebendo o mesmo número.

Pensei em arredondar o número para três casas decimais e depois para duas, mas isso me parece estranh

Eu procurei em todos os lugares e tudo o que vejo é que as pessoas mencionam parseFloat perde sua precisão e usar o .toFixed, no entanto, no exemplo acima, isso não ajud

qui está o meu script de teste que eu criei para recriar o problem

<script>
var num1 = parseFloat("78");
var num2 = parseFloat("7");
var num3 = parseFloat("0.0725");
var myTotal = num1 * num2 * num3;
var result = Math.round(myTotal*100)/100

alert(myTotal);
alert(myTotal.toFixed(2));
alert(result);
</script>

questionAnswers(3)

yourAnswerToTheQuestion