BigDecimal Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Números decimales con signo de precisión arbitraria inmutables.
[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, Java.Lang.IComparable
[<Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)>]
type BigDecimal = class
inherit Number
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComparable
- Herencia
- Atributos
- Implementaciones
Comentarios
Números decimales con signo de precisión arbitraria inmutables. Consta BigDecimal de un valor entero de precisión arbitraria #unscaledValue() sin escalar y una escala de enteros de 32 bits #scale(). Si es cero o positivo, la escala es el número de dígitos a la derecha del separador decimal. Si es negativo, el valor sin escala del número se multiplica por diez a la potencia de la negación de la escala. Por lo tantoBigDecimal, el valor del número representado por (unscaledValue × 10<sup>-scale</sup>) es .
La BigDecimal clase proporciona operaciones para la aritmética, manipulación de escalado, redondeo, comparación, hash y conversión de formato. El #toString método proporciona una representación canónica de .BigDecimal
La BigDecimal clase proporciona a su usuario un control completo sobre el comportamiento de redondeo. Si no se especifica ningún modo de redondeo y no se puede representar el resultado exacto, se produce una ArithmeticException excepción ; de lo contrario, los cálculos se pueden llevar a cabo en un modo de precisión y redondeo elegido proporcionando un objeto adecuado MathContext a la operación. En cualquier caso, se proporcionan ocho <>modos< de redondeo/em> para el control del redondeo. El uso de los campos enteros de esta clase (como #ROUND_HALF_UP) para representar el modo de redondeo está en desuso; los valores de enumeración de RoundingModeenum, (como RoundingMode#HALF_UP) se deben usar en su lugar.
Cuando se proporciona un MathContext objeto con una configuración de precisión de 0 (por ejemplo, MathContext#UNLIMITED), las operaciones aritméticas son exactas, como son los métodos aritméticos que no toman ningún MathContext objeto. Como corolario de calcular el resultado exacto, la configuración del modo de redondeo de un MathContext objeto con un valor de precisión 0 no se utiliza y, por tanto, irrelevante. En el caso de la división, el cociente exacto podría tener una expansión decimal infinitamente larga; por ejemplo, 1 dividido por 3. Si el cociente tiene una expansión decimal noterminada y se especifica la operación para devolver un resultado exacto, se produce una ArithmeticException excepción . De lo contrario, se devuelve el resultado exacto de la división, como se hace para otras operaciones.
Cuando la configuración de precisión no es 0, las reglas de BigDecimal aritmética son ampliamente compatibles con los modos de funcionamiento seleccionados de la aritmética definida en ANSI X3.274-1996 y ANSI X3.274-1996/AM 1-2000 (sección 7.4). A diferencia de esos estándares, BigDecimal incluye muchos modos de redondeo. Los conflictos entre estos estándares ANSI y la BigDecimal especificación se resuelven en favor de BigDecimal.
Dado que el mismo valor numérico puede tener representaciones diferentes (con diferentes escalas), las reglas de aritmética y redondeo deben especificar tanto el resultado numérico como la escala utilizada en la representación del resultado.
Las diferentes representaciones del mismo valor numérico se denominan miembros de la misma cohorte. El orden natural #compareTo(BigDecimal) de BigDecimal considera que los miembros de la misma cohorte son iguales entre sí. Por el contrario, el #equals(Object) equals método requiere que el valor numérico y la representación sean iguales para que la igualdad se mantenga. Los resultados de los métodos como #scale() y #unscaledValue() variarán para valores numéricamente iguales con representaciones diferentes.
En general, los modos de redondeo y la configuración de precisión determinan cómo las operaciones devuelven resultados con un número limitado de dígitos cuando el resultado exacto tiene más dígitos (quizás infinitamente muchos en el caso de división y raíz cuadrada) que el número de dígitos devueltos.
En primer lugar, el número total de dígitos que se van a devolver se especifica mediante el MathContextvalor de ; precision esto determina la precisión del resultado. El recuento de dígitos comienza desde el dígito distinto de cero izquierdo del resultado exacto. El modo de redondeo determina cómo afectan los dígitos finales descartados al resultado devuelto.
Para todos los operadores aritméticos, la operación se lleva a cabo como si se calculara por primera vez un resultado intermedio exacto y, a continuación, se redondeó al número de dígitos especificados por la configuración de precisión (si es necesario), utilizando el modo de redondeo seleccionado. Si no se devuelve el resultado exacto, se descartan algunas posiciones de dígitos del resultado exacto. Cuando el redondeo aumenta la magnitud del resultado devuelto, es posible crear una nueva posición de dígito mediante una propagación de transporte a un dígito "9" inicial. Por ejemplo, redondear el valor 999,9 a tres dígitos redondeando hacia arriba sería numéricamente igual a mil, representado como 100&veces; 10<sup>1</sup>. En tales casos, el nuevo "1" es la posición de dígito inicial del resultado devuelto.
En el caso de los métodos y constructores con un MathContext parámetro , si el resultado es inexacto, pero el modo de redondeo es RoundingMode#UNNECESSARY UNNECESSARY, se producirá una ArithmeticException excepción .
Además de un resultado exacto lógico, cada operación aritmética tiene una escala preferida para representar un resultado. La escala preferida para cada operación se muestra en la tabla siguiente.
<table class="striped" style="text-align:left">caption Preferred Scales for Results of Arithmetic Operations </caption><thead><tr>th scope="col"<Operation></th>scope="col"<Preferred Scale of Result></th>/tr/thead<><tbody><tr>th scope="row"<Add>/th<td max(addend.scale(), augend.scale()></td><><tr><> th scope="row"<Resta><></th><td>max(minuend.scale(), subtrahend.scale())</td><tr><th scope="row">Multiply</th><td>multiplier.scale() + multiplicand.scale()</td><tr><th scope="row">Divide</th><td>dividendo.scale() - divisor.scale()</td><tr><th scope="row">Square root</th><td>radicand.scale()/2</td></tbody></table>
Estas escalas son las que usan los métodos que devuelven resultados aritméticos exactos; excepto que una división exacta puede tener que usar una escala mayor, ya que el resultado exacto puede tener más dígitos. Por ejemplo, 1/32 es 0.03125.
Antes de redondear, la escala del resultado intermedio lógico exacto es la escala preferida para esa operación. Si el resultado numérico exacto no se puede representar en precision dígitos, el redondeo selecciona el conjunto de dígitos que se va a devolver y la escala del resultado se reduce de la escala del resultado intermedio a la escala mínima que puede representar los precision dígitos devueltos realmente. Si el resultado exacto se puede representar con al menos precision dígitos, se devuelve la representación del resultado con la escala más cercana a la escala preferida. En concreto, un cociente que se puede representar exactamente en menos de precision dígitos quitando ceros finales y disminuyendo la escala. Por ejemplo, redondeo a tres dígitos mediante el modo redondeo roundingMode#FLOOR, <br>
19/100 = 0.19 // integer=19, scale=2
<br>
pero<br>
21/110 = 0.190 // integer=190, scale=3
<br>
Tenga en cuenta que para agregar, restar y multiplicar, la reducción en la escala será igual al número de posiciones de dígitos del resultado exacto que se descartan. Si el redondeo hace que una propagación de transporte cree una nueva posición de dígito de orden alto, se descarta un dígito adicional del resultado que cuando no se crea ninguna nueva posición de dígito.
Otros métodos pueden tener semántica de redondeo ligeramente diferente. Por ejemplo, el resultado del pow método mediante el algoritmo especificado #pow(int, MathContext) puede diferir ocasionalmente del resultado matemático redondeado por más de una unidad en el último lugar, una #ulp() ulp.
Se proporcionan dos tipos de operaciones para manipular la escala de : BigDecimaloperaciones de escalado y redondeo y operaciones de movimiento de punto decimal. Las operaciones de escalado y redondeo (#setScale setScale y #round round) devuelven un BigDecimal cuyo valor es aproximadamente (o exactamente) igual al del operando, pero cuya escala o precisión es el valor especificado; es decir, aumentan o reducen la precisión del número almacenado con un efecto mínimo en su valor. Las operaciones de movimiento de punto decimal (#movePointLeft movePointLeft y #movePointRight movePointRight) devuelven un BigDecimal objeto creado a partir del operando moviendo el separador decimal una distancia especificada en la dirección especificada.
Como entero de 32 bits, el conjunto de valores de la escala es grande, pero limitado. Si la escala de un resultado superaría el intervalo de un entero de 32 bits, ya sea por desbordamiento o subflujo, la operación puede producir un ArithmeticException.
Por motivos de brevedad y claridad, se usa el pseudocódigo en las descripciones de BigDecimal los métodos. La expresión (i + j) pseudocódigo es abreviada para "cuyo BigDecimal valor es el del BigDecimali agregado al de BigDecimalj". La expresión (i == j) pseudocódigo es abreviada para "true si y solo siBigDecimalirepresenta el mismo valor que ".BigDecimalj Otras expresiones de pseudocódigo se interpretan de forma similar. Los corchetes se usan para representar el par particular BigInteger y de escala que define un BigDecimal valor; por ejemplo , [19, 2] es numéricamente BigDecimal igual a 0,19 que tiene una escala de 2.
Todos los métodos y constructores de esta clase inician NullPointerException cuando se pasa una null referencia de objeto para cualquier parámetro de entrada.
Agregado en la versión 1.1.
Java documentación para java.math.BigDecimal.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Constructores
| Nombre | Description |
|---|---|
| BigDecimal(BigInteger, Int32, MathContext) |
Traduce un |
| BigDecimal(BigInteger, Int32) |
Traduce un |
| BigDecimal(BigInteger, MathContext) |
Convierte un objeto |
| BigDecimal(BigInteger) |
Convierte un objeto |
| BigDecimal(Char[], Int32, Int32, MathContext) |
Traduce una representación de matriz de caracteres de |
| BigDecimal(Char[], Int32, Int32) |
Traduce una representación de matriz de caracteres de |
| BigDecimal(Char[], MathContext) |
Convierte una representación de matriz de caracteres de |
| BigDecimal(Char[]) |
Convierte una representación de matriz de caracteres de |
| BigDecimal(Double, MathContext) |
Convierte un objeto |
| BigDecimal(Double) |
Convierte un objeto |
| BigDecimal(Int32, MathContext) |
Convierte un objeto |
| BigDecimal(Int32) |
Convierte un objeto |
| BigDecimal(Int64, MathContext) |
Convierte un objeto |
| BigDecimal(Int64) |
Convierte un objeto |
| BigDecimal(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
| BigDecimal(String, MathContext) |
Traduce la representación de cadena de en |
| BigDecimal(String) |
Traduce la representación de cadena de en |
Campos
| Nombre | Description |
|---|---|
| RoundCeiling |
Modo de redondeo para redondear hacia el infinito positivo. |
| RoundDown |
Modo de redondeo para redondear hacia cero. |
| RoundFloor |
Modo de redondeo para redondear hacia el infinito negativo. |
| RoundHalfDown |
Modo de redondeo para redondear hacia "vecino más cercano" a menos que ambos vecinos sean equidistantes, en cuyo caso redondee hacia abajo. |
| RoundHalfEven |
Modo de redondeo para redondear hacia el "vecino más cercano" a menos que ambos vecinos sean equidistantes, en cuyo caso, redondee hacia el vecino par. |
| RoundHalfUp |
Modo de redondeo para redondear hacia "vecino más cercano" a menos que ambos vecinos sean equidistantes, en cuyo caso redondee. |
| RoundUnnecessary |
Modo de redondeo para afirmar que la operación solicitada tiene un resultado exacto, por lo que no es necesario redondear. |
| RoundUp |
Modo de redondeo para redondear de cero. |
Propiedades
| Nombre | Description |
|---|---|
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| JniPeerMembers |
Obtiene los miembros del mismo nivel de JNI para este tipo. |
| One |
Valor 1, con una escala de 0. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| Ten |
Valor 10, con una escala de 0. |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| Zero |
Valor 0, con una escala de 0. |
Métodos
| Nombre | Description |
|---|---|
| Abs() |
Devuelve un |
| Abs(MathContext) |
Devuelve un |
| Add(BigDecimal, MathContext) |
Devuelve un |
| Add(BigDecimal) |
Devuelve un |
| ByteValue() |
Devuelve el valor del número especificado como . |
| ByteValueExact() |
Convierte esto |
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| CompareTo(BigDecimal) |
Compara esto |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| Divide(BigDecimal, Int32, RoundingMode) |
Devuelve un |
| Divide(BigDecimal, Int32, RoundOptions) |
Devuelve un |
| Divide(BigDecimal, MathContext) |
Devuelve un |
| Divide(BigDecimal, RoundingMode) |
Devuelve un |
| Divide(BigDecimal, RoundOptions) |
Devuelve un |
| Divide(BigDecimal) |
Devuelve un |
| DivideAndRemainder(BigDecimal, MathContext) |
Devuelve una matriz de dos elementos |
| DivideAndRemainder(BigDecimal) |
Devuelve una matriz de dos elementos |
| DivideToIntegralValue(BigDecimal, MathContext) |
Devuelve un |
| DivideToIntegralValue(BigDecimal) |
Devuelve un |
| DoubleValue() |
Convierte este |
| Equals(Object) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| FloatValue() |
Convierte este |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| IntValue() |
Convierte esto |
| IntValueExact() |
Convierte esto |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| LongValue() |
Convierte este |
| LongValueExact() |
Convierte esto |
| Max(BigDecimal) |
Devuelve el máximo de y |
| Min(BigDecimal) |
Devuelve el mínimo de y |
| MovePointLeft(Int32) |
Devuelve un |
| MovePointRight(Int32) |
Devuelve un |
| Multiply(BigDecimal, MathContext) |
Devuelve un |
| Multiply(BigDecimal) |
Devuelve un |
| Negate() |
Devuelve un |
| Negate(MathContext) |
Devuelve un |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| Plus() |
Devuelve un |
| Plus(MathContext) |
Devuelve un |
| Pow(Int32, MathContext) |
Devuelve un |
| Pow(Int32) |
Devuelve un |
| Precision() |
Devuelve la precisión de este |
| Remainder(BigDecimal, MathContext) |
Devuelve un |
| Remainder(BigDecimal) |
Devuelve un |
| Round(MathContext) |
Devuelve una |
| Scale() |
Devuelve la escala de este |
| ScaleByPowerOfTen(Int32) |
Devuelve un BigDecimal cuyo valor numérico es igual a ( |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| SetScale(Int32, RoundingMode) |
Devuelve un |
| SetScale(Int32, RoundOptions) |
Devuelve un |
| SetScale(Int32) |
Devuelve un |
| ShortValue() |
Devuelve el valor del número especificado como . |
| ShortValueExact() |
Convierte esto |
| Signum() |
Devuelve la función signum de este |
| Sqrt(MathContext) |
Devuelve una aproximación a la raíz cuadrada de |
| StripTrailingZeros() |
Devuelve una |
| Subtract(BigDecimal, MathContext) |
Devuelve un |
| Subtract(BigDecimal) |
Devuelve un |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToBigInteger() |
Convierte este |
| ToBigIntegerExact() |
Convierte esto |
| ToEngineeringString() |
Devuelve una representación de cadena de este |
| ToPlainString() |
Devuelve una representación de cadena de este |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| Ulp() |
Devuelve el tamaño de un ulp, una unidad en el último lugar, de este |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| UnscaledValue() |
Devuelve un |
| ValueOf(Double) |
Convierte un objeto |
| ValueOf(Int64, Int32) |
Traduce un |
| ValueOf(Int64) |
Convierte un |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IComparable.CompareTo(Object) |
Compara este valor con el objeto especificado. |
| IJavaPeerable.Disposed() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Números decimales con signo de precisión arbitraria inmutables. |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Números decimales con signo de precisión arbitraria inmutables. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |