Может кто-то здесь, пожалуйста, помогите мне понять, как определить, когда ограничения с плавающей запятой вызовут ошибки в ваших расчетах. Например, следующий код.
CalculateTotalTax = function (TaxRate, TaxFreePrice) {
return ((parseFloat(TaxFreePrice) / 100) * parseFloat(TaxRate)).toFixed(4);
};
Мне не удалось ввести какие-либо два значения, которые вызвали для меня неправильный результат для этого метода. Если я удаляю toFixed (4), я могу понять, где вычисления начинают терять точность (где-то около шестого десятичного разряда). Сказав это, мое понимание поплавков заключается в том, что иногда даже небольшие числа могут быть не представлены или я неправильно понял, и их можно было бы точно указать на 4 десятичных знака (например).
MSDN объясняет float как такой...
Это означает, что они не могут представление любого количества, которое а не двоичная дробь (формы k/ (2 ^ n), где k и n - целые числа)
Теперь я предполагаю, что это относится ко всем поплавкам (в том числе к тем, которые используются в javascript).
В сущности, мой вопрос сводится к этому. Как определить, будет ли какой-либо конкретный метод уязвимым для ошибок в операциях с плавающей запятой, с какой точностью будут выполняться эти ошибки и какие входы потребуются для создания этих ошибок?
Надеюсь, то, что я прошу, имеет смысл.