Pregunta principal

Estoy usando este BigDecimal y estoy intentando crear un nuevo objeto MathContext para pasar al código método divide () . Pero todo lo que he intentado arroja excepciones que dicen que no está definido. A continuación, se muestran algunos ejemplos de cosas que probé y que no funcionan:

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

¿Qué estoy haciendo mal? (Por cierto, todos los motores de búsqueda que he probado muestran resultados para Java, no para JavaScript, a pesar de que mi primera palabra clave es javascript).

Fondo

Estoy intentando resolver esta pregunta que hice anteriormente. He determinado que el problema es que BigDecimal está redondeando las respuestas de una manera que no quiero. Al seguir el código con un depurador, parece que necesito pasar un objeto MathContext como segundo argumento al método divide(). Aquí está el fragmento relevante de mi código (ignore los números mágicos por ahora):

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

Cualquier otro método para resolver mi problema sería aceptable, pero aún quiero entender por qué no puedo simplemente hacer new MathContext().

0
Scott Severance 6 ene. 2012 a las 07:18

1 respuesta

La mejor respuesta

Creo que el primer ejemplo de simplemente crear

context = new MathContext(...)

Es el correcto. Al menos está funcionando en mi ejemplo aquí. Incluyo la biblioteca BigDecimal directamente desde github con:

<script type="text/javascript" src="https://raw.github.com/dtrebbien/BigDecimal.js/master/build/BigDecimal-all-last.js"></script>
2
eolsson 6 ene. 2012 a las 19:07
Resulta que estabas usando una versión posterior a la mía, y tu versión contenía una corrección de errores relevante. Actualizar mi versión resolvió mi problema.
 – 
Scott Severance
6 ene. 2012 a las 21:08