Compreendendo problemas de ponto flutuante

Alguém aqui poderia me ajudar a entender como determinar quando as limitações de ponto flutuante causarão erros em seus cálculos. Por exemplo, o seguinte código.

CalculateTotalTax = function (TaxRate, TaxFreePrice) {
     return ((parseFloat(TaxFreePrice) / 100) * parseFloat(TaxRate)).toFixed(4);
};

Não foi possível inserir dois valores que me causaram um resultado incorreto para este método. Se eu remover o toFixed (4), posso ver onde os cálculos começam a perder precisão (em algum lugar na sexta casa decimal). Dito isto, porém, meu entendimento de carros alegóricos é que mesmo números pequenos às vezes podem falhar em serem representados ou eu entendi mal e 4 casas decimais (por exemplo) sempre são representadas com precisão.

MSDN explica carros alegóricos comotal...

Isso significa que eles não podem conter uma representação exata de qualquer quantidade que não seja uma fração binária (da forma k / (2 ^ n) em que k e n são números inteiros)

Agora, suponho que isso se aplique a todos os carros alegóricos (incluindo os usados em javascript).

Fundamentalmente, minha pergunta se resume a isso. Como determinar se algum método específico estará vulnerável a erros em operações de ponto flutuante, com que precisão esses erros se materializarão e quais entradas serão necessárias para produzir esses erros?

Espero que o que eu pergunte faça sentido.

questionAnswers(4)

yourAnswerToTheQuestion