Как создать новый MathContext?

Главный вопрос

Я использую этот BigDecimal и пытаюсь создать новый объект MathContext для передачи в метод BigDecimal divide() . Но все, что я пробовал, выдавало исключения, говорящие, что это не определено. Вот несколько примеров того, что я пробовал, но не работает:

context = new MathContext();                            // ReferenceError: MathContext is not defined
context = new BigDecimal.MathContext();                 // TypeError: undefined is not a function
context = new BigDecimal.prototype.MathContext();       // TypeError: undefined is not a function
a = new BigDecimal('1'); context = new a.MathContext(); // TypeError: undefined is not a function

Что я делаю не так? (Кстати, все поисковые системы, которые я пробовал, возвращают результаты для Java, а не для Javascript, несмотря на то, что мое первое ключевое слово — javascript.)

Фон

Я пытаюсь решить этот вопрос, который я задавал ранее. Я определил, что проблема в том, что BigDecimal округляет ответы не так, как мне нужно. При просмотре кода с помощью отладчика оказывается, что мне нужно передать объект MathContext в качестве второго аргумента методу divide(). Вот соответствующий фрагмент моего кода (пока не обращайте внимания на магические числа):

// v1 and v2 are both of type BigDecimal.
v1 = v1.divide(v2, new MathContext(0, 0, false, 4));

Любой другой способ решения моей проблемы был бы приемлем, но я все же хочу понять, почему я не могу просто сделать new MathContext().


person Scott Severance    schedule 06.01.2012    source источник


Ответы (1)


Я думаю, что первый пример просто создания

context = new MathContext(...)

является правильным. По крайней мере, это работает в моем примере здесь. Я включаю библиотеку BigDecimal прямо из github с помощью:

<script type="text/javascript" src="https://raw.github.com/dtrebbien/BigDecimal.js/master/build/BigDecimal-all-last.js"></script>
person eolsson    schedule 06.01.2012
comment
Оказывается, вы использовали более позднюю версию, чем я, и ваша версия содержала соответствующее исправление. Обновление моей версии решило мою проблему. - person Scott Severance; 06.01.2012