Как мне создать новый MathContext? - PullRequest
0 голосов
/ 06 января 2012

Основной вопрос

Я использую этот 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().

1 Ответ

2 голосов
/ 06 января 2012

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

context = new MathContext(...)

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

<script type="text/javascript" src="https://raw.github.com/dtrebbien/BigDecimal.js/master/build/BigDecimal-all-last.js"></script>
...