Я пытаюсь выполнить следующие вычисления в Javascript:
e^x / (1 + e^x)
, где x
- длинное число с плавающей запятой.
В этом случае мне требуется точность вкак минимум 10-е десятичное место.
Я использовал BigDecimal для точной обработки чисел с плавающей запятой, как указано в Руководство по плавающей запятой .
Моя первая попытка:
var foo = new BigDecimal(myVeryLongFloatingPoint)
var bar = Math.exp(foo);
var spam = bar.divide(bar.add(new BigDecimal("1")));
привела к ошибке (где xxxxx - число с плавающей запятой):
TypeError: Object xxxxx has no method 'add'
Поэтому я попытался преобразовать bar
вОбъект BigDecimal:
var foo = new BigDecimal(myVeryLongFloatingPoint)
var bar = new BigDecimal(Math.exp(foo));
var spam = bar.divide(bar.add(new BigDecimal("1")));
, что, в свою очередь, приводит к ошибке (где xxxxx - число с плавающей запятой):
BigDecimal(): Not a number: xxxxx
Куда я иду?
Является ли это разумным подходом к обработке такого рода расчетов с плавающей запятой, где требуется высокая степень точности?