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.Interop.IJavaPeerable, 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 tanto(unscaledValue × 10<sup>-scale</sup>)
, el valor del número representado por BigDecimal
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 RoundingMode
enum
, (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 seleccionados de funcionamiento 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 MathContext
valor 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 : BigDecimal
operaciones 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 BigDecimal
i
agregado al de BigDecimal
j
". La expresión (i == j)
pseudocódigo es abreviada para "true
si y solo sii
BigDecimal
representa el mismo valor que ".BigDecimal
j
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.
Documentación de Java para java.math.BigDecimal
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Constructores
BigDecimal(BigInteger) |
Convierte un objeto |
BigDecimal(BigInteger, Int32) |
Traduce un |
BigDecimal(BigInteger, Int32, MathContext) |
Traduce un |
BigDecimal(BigInteger, MathContext) |
Convierte un objeto |
BigDecimal(Char[]) |
Convierte una representación de matriz de caracteres de |
BigDecimal(Char[], Int32, Int32) |
Traduce una representación de matriz de caracteres de |
BigDecimal(Char[], Int32, Int32, MathContext) |
Traduce una representación de matriz de caracteres de |
BigDecimal(Char[], MathContext) |
Convierte una representación de matriz de caracteres de |
BigDecimal(Double) |
Convierte un objeto |
BigDecimal(Double, MathContext) |
Convierte un objeto |
BigDecimal(Int32) |
Convierte un objeto |
BigDecimal(Int32, MathContext) |
Convierte un objeto |
BigDecimal(Int64) |
Convierte un objeto |
BigDecimal(Int64, MathContext) |
Convierte un objeto |
BigDecimal(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
BigDecimal(String) |
Traduce la representación de cadena de en |
BigDecimal(String, MathContext) |
Traduce la representación de cadena de en |
Campos
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
Class |
Devuelve la clase en tiempo de ejecución de este |
Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
JniIdentityHashCode |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
JniPeerMembers |
Números decimales con signo de precisión arbitraria inmutables. |
One |
Valor 1, con una escala de 0. |
PeerReference |
Números decimales con signo de precisión arbitraria inmutables. (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
Abs() |
Devuelve un |
Abs(MathContext) |
Devuelve un |
Add(BigDecimal) |
Devuelve un |
Add(BigDecimal, MathContext) |
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 |
Dispose() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
Dispose(Boolean) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
Divide(BigDecimal) |
Devuelve un |
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 |
DivideAndRemainder(BigDecimal) |
Devuelve una matriz de dos elementos |
DivideAndRemainder(BigDecimal, MathContext) |
Devuelve una matriz de dos elementos |
DivideToIntegralValue(BigDecimal) |
Devuelve un |
DivideToIntegralValue(BigDecimal, MathContext) |
Devuelve un |
DoubleValue() |
Convierte este |
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 del 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) |
Devuelve un |
Multiply(BigDecimal, MathContext) |
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) |
Devuelve un |
Pow(Int32, MathContext) |
Devuelve un |
Precision() |
Devuelve la precisión de este |
Remainder(BigDecimal) |
Devuelve un |
Remainder(BigDecimal, MathContext) |
Devuelve un |
Round(MathContext) |
Devuelve un |
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) |
SetScale(Int32) |
Devuelve un |
SetScale(Int32, RoundingMode) |
Devuelve un |
SetScale(Int32, RoundOptions) |
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) |
Devuelve un |
Subtract(BigDecimal, MathContext) |
Devuelve un |
ToArray<T>() |
Números decimales con signo de precisión arbitraria inmutables. (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() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
UnscaledValue() |
Devuelve un |
ValueOf(Double) |
Convierte un objeto |
ValueOf(Int64) |
Convierte un |
ValueOf(Int64, Int32) |
Traduce un |
Wait() |
Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em> o <em>interrumpido</em>.<>< (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) |
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) |
Implementaciones de interfaz explícitas
IComparable.CompareTo(Object) |
Números decimales con signo de precisión arbitraria inmutables. |
IJavaPeerable.Disposed() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
IJavaPeerable.Finalized() |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
IJavaPeerable.JniManagedPeerState |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Números decimales con signo de precisión arbitraria inmutables. (Heredado de Object) |
Métodos de extensió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. |
GetJniTypeName(IJavaPeerable) |
Números decimales con signo de precisión arbitraria inmutables. |