Spec-Zone.ru › Scala 2.12 Library

Класс scala.math.BigDecimal

Компаньон объект BigDecimal

final класс BigDecimal extends ScalaNumber с ScalaNumericConversions с Serializable с Ordered[BigDecimal]

BigDecimal представляет десятичные числа с плавающей запятой произвольной точности. По умолчанию точность примерно соответствует точности чисел с плавающей запятой IEEE 128-битного формата (34 десятичных знака, HALF_EVEN режим округления). В пределах диапазона чисел IEEE binary128, BigDecimal будет совпадать с BigInt как для равенства, так и для хеш-кодов (и будет совпадать с примитивными типами). За пределами этого диапазона — числа с более чем 4934 цифрами при полном представлении — hashCode BigInt и BigDecimal могут расходиться из-за сложности эффективного вычисления как десятичного представления в BigDecimal, так и двоичного представления в BigInt.

При создании BigDecimal из Double или Float, необходимо проявлять осторожность, так как двоичное дробное представление Double и Float не легко преобразуется в десятичное представление. Доступны три явных схемы преобразования. BigDecimal.decimal преобразует число с плавающей запятой в десятичное текстовое представление и создает BigDecimal на основе этого представления. BigDecimal.binary расширяет двоичную дробь до запрошенной или стандартной точности. BigDecimal.exact расширяет двоичную дробь до полного числа цифр, тем самым получая точное десятичное значение, соответствующее двоичной дроби этого числа с плавающей запятой. BigDecimal равенство соответствует десятичному разложению Double: BigDecimal.decimal(0.1) == 0.1. Обратите внимание, что с 0.1f != 0.1, это не всегда верно для Float. Вместо этого, 0.1f == BigDecimal.decimal((0.1f).toDouble).

Чтобы проверить, может ли число BigDecimal быть преобразовано в Double или Float и затем обратно без потери информации с помощью одного из этих методов, проверьте с помощью isDecimalDouble, isBinaryDouble, или isExactDouble или соответствующих Float версий. Обратите внимание, что BigInt's isValidDouble будет согласовываться с isExactDouble, а не с isDecimalDouble по умолчанию.

BigDecimal использует десятичное представление двоичных чисел с плавающей запятой для определения равенства и хеш-кодов. Это приводит к другим ответам, чем при преобразовании между Long и Double значениями, где используется точная форма. Как всегда, поскольку представление с плавающей запятой является убыточным, рекомендуется проявлять осторожность при предположении, что тождество будет сохранено при многократных преобразованиях.

BigDecimal поддерживает MathContext, который определяет округление, применяемое к некоторым вычислениям. В большинстве случаев значение BigDecimal также округляется до точности, заданной MathContext. Чтобы создать BigDecimal с другой точностью, чем его MathContext, используйте new BigDecimal(new java.math.BigDecimal(...), mc). Округление будет применяться к тем математическим операциям, которые могут значительно изменить количество цифр в полном представлении, а именно к умножению, делению и возведению в степень. MathContext левого аргумента всегда определяет степень округления, если таковая имеется, и является тем, что распространяется через арифметические операции, которые сами не применяют округление.

Источник
BigDecimal.scala
Линейные надтипы

Конструкторы экземпляров

новый BigDecimal(bigDecimal: java.math.BigDecimal)

новый BigDecimal(bigDecimal: java.math.BigDecimal, mc: MathContext)

Члены-значения

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

возвращает

true если !(this == that), в противном случае false.

Definition Classes
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращается значение хэша, согласованное с равенством значений: если два экземпляра типа значения сравниваются как true, то ## вернёт одинаковое значение хэша для каждого из них. Для null возвращается хэш-код, где null.hashCode вызывает NullPointerException.

возвращает

значение хэша, согласованное с ==

Definition Classes
AnyRef → Any

def %(that: BigDecimal): BigDecimal

def *(that: BigDecimal): BigDecimal

def +(that: BigDecimal): BigDecimal

def -(that: BigDecimal): BigDecimal

def ->[B](y: B): (BigDecimal, B)

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в ArrowAssoc[BigDecimal] с помощью метода ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc
Аннотации
@inline()

def /(that: BigDecimal): BigDecimal

def /%(that: BigDecimal): (BigDecimal, BigDecimal)

Деление и остаток — возвращает кортеж, содержащий результат divideToIntegralValue и остаток. Вычисление точное: округление не применяется.

def <(that: BigDecimal): Boolean

Возвращает true, если this меньше that

Definition Classes
Ordered

def <=(that: BigDecimal): Boolean

Возвращает true, если this меньше или равно that.

Definition Classes
Ordered

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

возвращает

true если объект-получатель эквивалентен аргументу; false в противном случае.

Definition Classes
AnyRef → Any

def >(that: BigDecimal): Boolean

Возвращает true, если this больше that.

Definition Classes
Ordered

def >=(that: BigDecimal): Boolean

Возвращает true, если this больше или равно that.

Definition Classes
Ordered

def abs: BigDecimal

def apply(mc: MathContext): BigDecimal

final def asInstanceOf[T0]: T0

Привести объект-получатель к типу T0.

Обратите внимание, что успех приведения типов во время выполнения зависит от модели стирания Scala. Поэтому выражение 1.asInstanceOf[String] вызовет ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] — нет. В последнем примере, так как аргумент типа стирается во время компиляции, нельзя проверить, соответствуют ли элементы списка требуемому типу.

возвращает

объект-получатель.

Definition Classes
Any
Исключения

ClassCastException если объект-получатель не является экземпляром стирания типа T0.

val bigDecimal: java.math.BigDecimal

def byteValue(): Byte

Преобразует этот BigDecimal в Byte. Если BigDecimal слишком большой для Byte, возвращаются только младшие 8 бит. Обратите внимание, что при этом преобразовании может потеряться информация о величине значения BigDecimal, а также может быть возвращён результат с противоположным знаком.

Definition Classes
BigDecimal → ScalaNumericAnyConversions → Number

def charValue: Char

Преобразует этот BigDecimal в Char. Если BigDecimal слишком большой для Char, возвращаются только младшие 16 бит. Обратите внимание, что при этом преобразовании может потеряться информация о величине значения BigDecimal, а также всегда возвращается положительный результат.

def clone(): AnyRef

Создаёт копию объекта-приёмника.

По умолчанию реализация метода clone зависит от платформы.

returns

копия объекта-приёмника.

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( ... ) @native()
Note

не указано SLS в качестве члена AnyRef

def compare(that: BigDecimal): Int

Сравнивает этот BigDecimal с указанным BigDecimal

Definition Classes
BigDecimal → Ordered

def compareTo(that: BigDecimal): Int

Результат сравнения this с операндом that.

Definition Classes
Ordered → Comparable

def doubleValue(): Double

Преобразует этот BigDecimal в Double. Если у этого BigDecimal слишком большая величина для представления в формате double, он будет преобразован в Double.NEGATIVE_INFINITY или Double.POSITIVE_INFINITY соответственно.

Definition Classes
BigDecimal → ScalaNumericAnyConversions → Number

def ensuring(cond: (BigDecimal) ⇒ Boolean, msg: ⇒ Any): BigDecimal

Implicit
Этот член добавлен неявным преобразованием из BigDecimal в Ensuring[BigDecimal] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: (BigDecimal) ⇒ Boolean): BigDecimal

Implicit
Этот член добавлен неявным преобразованием из BigDecimal в Ensuring[BigDecimal] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): BigDecimal

Implicit
Этот член добавлен неявным преобразованием из BigDecimal в Ensuring[BigDecimal] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean): BigDecimal

Implicit
Этот член добавлен неявным преобразованием из BigDecimal в Ensuring[BigDecimal] с помощью метода Ensuring в scala.Predef.
Definition Classes
Ensuring

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на не-null экземплярах AnyRef, и обладает тремя дополнительными свойствами:

    Он согласован: для любых не-null экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false. Для любого не-null экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить, чтобы их поведение соответствовало равенству ссылок. Поэтому, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).

returns

true если аргумент является ссылкой на объект-получатель; false в противном случае.

Definition Classes
AnyRef

def equals(that: BigDecimal): Boolean

def equals(that: Any): Boolean

Сравнивает этот BigDecimal со значением на равенство. Где Float и Double расходятся, BigDecimal будет согласовываться со значением Double

that

объект для сравнения с этим объектом на равенство.

returns

true если объект-получатель эквивалентен аргументу; false в противном случае.

Definition Classes
BigDecimal → AnyRef → Any

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда к объекту больше нет ссылок.

Подробности о том, когда и если вызывается метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
Note

не указано в SLS как член AnyRef

def floatValue(): Float

Преобразует этот BigDecimal в Float. Если у этого BigDecimal слишком большая величина для представления как float, он будет преобразован в Float.NEGATIVE_INFINITY или Float.POSITIVE_INFINITY соответственно.

Definition Classes
BigDecimal → ScalaNumericAnyConversions → Number

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Строки формата аналогичны строкам формата String.format (@см java.lang.String.format).

Implicit
Этот член добавлен неявным преобразованием из BigDecimal в StringFormat[BigDecimal] с помощью метода StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_]

Возвращает представление класса во время выполнения объекта.

returns

объект класса, соответствующий типу времени выполнения получателя.

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Возвращает код хэша для этого BigDecimal. Обратите внимание, что это не просто использование базового объекта java hashCode, так как мы сравниваем BigDecimal со compareTo, что делает 2 == 2.00, в то время как в java эти значения не равны с неравными hashCode. Эти коды хэша согласуются с BigInt для целых чисел до ~4934 цифр (диапазон IEEE 128-битного числа с плавающей точкой). За пределами этого коды хэша будут различаться; это предотвращает явное представление формы BigInt для BigDecimal значений с большими показателями.

returns

значение кода хэша для этого объекта.

Definition Classes
BigDecimal → AnyRef → Any

def intValue(): Int

Преобразует этот BigDecimal в Int. Если BigDecimal слишком велик, чтобы уместиться в Int, возвращаются только младшие 32 бита. Обратите внимание, что это преобразование может потерять информацию о величине значения BigDecimal, а также вернуть результат с противоположным знаком.

Definition Classes
BigDecimal → ScalaNumericAnyConversions → Number

def isBinaryDouble: Boolean

def isBinaryFloat: Boolean

def isDecimalDouble: Boolean

def isDecimalFloat: Boolean

def isExactDouble: Boolean

def isExactFloat: Boolean

final def isInstanceOf[T0]: Boolean

Проверка, является ли динамический тип объекта-приемника T0.

Обратите внимание, что результат проверки выполняется с учётом семантики стирания Scala. Таким образом, выражение 1.isInstanceOf[String] вернёт false, в то время как выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, относятся ли элементы списка к указанному типу.

возвращает

true если объект-приемник является экземпляром стирания типа T0; false в противном случае.

Классы определений
Any

def isValidByte: Boolean

Возвращает true если дробная часть равна нулю, и значение находится в диапазоне от scala.Byte MinValue до MaxValue; в противном случае возвращает false.

Классы определений
BigDecimal → ScalaNumericAnyConversions

def isValidChar: Boolean

Возвращает true если дробная часть равна нулю, и значение находится в диапазоне от scala.Char MinValue до MaxValue; в противном случае возвращает false.

Классы определений
BigDecimal → ScalaNumericAnyConversions

def isValidInt: Boolean

Возвращает true если дробная часть равна нулю, и значение находится в диапазоне от scala.Int MinValue до MaxValue; в противном случае возвращает false.

Классы определений
BigDecimal → ScalaNumericAnyConversions

def isValidLong: Boolean

def isValidShort: Boolean

Возвращает true если дробная часть равна нулю, и значение находится в диапазоне от scala.Short MinValue до MaxValue; в противном случае возвращает false.

Классы определений
BigDecimal → ScalaNumericAnyConversions

def isWhole(): Boolean

возвращает

true если у числа нет дробной части, false в противном случае.

Классы определений
BigDecimal → ScalaNumericAnyConversions → ScalaNumber

def longValue(): Long

Преобразует этот BigDecimal в Long. Если BigDecimal слишком велик для Long, возвращаются только младшие 64 бита. Обратите внимание, что при этом преобразовании может потеряться информация о величине значения BigDecimal, а также может быть возвращён результат с противоположным знаком.

Классы определений
BigDecimal → ScalaNumericAnyConversions → Number

def max(that: BigDecimal): BigDecimal

val mc: MathContext

def min(that: BigDecimal): BigDecimal

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

возвращает

true если аргумент не является ссылкой на объект-приемник; false в противном случае.

Классы определений
AnyRef

final def notify(): Unit

Разбуживает один поток, ожидающий монитор объекта-приемника.

Классы определений
AnyRef
Аннотации
@native()
Примечание

не указано в SLS как член AnyRef

final def notifyAll(): Unit

Разбуживает все потоки, ожидающие монитор объекта-приемника.

Классы определений
AnyRef
Аннотации
@native()
Примечание

не указано в SLS как член AnyRef

def pow(n: Int): BigDecimal

def precision: Int

def quot(that: BigDecimal): BigDecimal

def remainder(that: BigDecimal): BigDecimal

def round(mc: MathContext): BigDecimal

def rounded: BigDecimal

def scale: int

def setScale(scale: int, mode: RoundingMode): BigDecimal

def setScale(scale: int): BigDecimal

def shortValue(): short

Преобразует этот BigDecimal в Short. Если BigDecimal слишком велик для размещения в Short, возвращаются только младшие 16 битов. Обратите внимание, что при этом преобразовании может потеряться информация о величине значения BigDecimal, а также может быть возвращён результат с противоположным знаком.

Definition Classes
BigDecimal → ScalaNumericAnyConversions → Number

def signum: int

final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef

def to(end: BigDecimal, step: BigDecimal): Inclusive[scala.BigDecimal]

def to(end: BigDecimal): Partial[BigDecimal, Inclusive[BigDecimal]]

def toBigInt(): BigInt

def toBigIntExact(): Option[BigInt]

def toByte: byte

Возвращает значение этого объекта как scala.Byte. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toByteExact: byte

Преобразует этот BigDecimal в scala.Byte, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или он выходит за пределы возможного диапазона для результата типа scala.Byte, то выбрасывается java.lang.ArithmeticException.

def toChar: char

Возвращает значение этого объекта как scala.Char. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toDouble: double

Возвращает значение этого объекта как scala.Double. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toFloat: float

Возвращает значение этого объекта как scala.Float. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toInt: int

Возвращает значение этого объекта как scala.Int. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toIntExact: int

Преобразует этот BigDecimal в scala.Int, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или он выходит за пределы возможного диапазона для результата типа scala.Int, то выбрасывается java.lang.ArithmeticException.

def toLong: long

Возвращает значение этого объекта как scala.Long. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toLongExact: long

Преобразует этот BigDecimal в scala.Long, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или он выходит за пределы возможного диапазона для результата типа scala.Long, то выбрасывается java.lang.ArithmeticException.

def toShort: short

Возвращает значение этого объекта как scala.Short. Может потребоваться округление или усечение.

Definition Classes
ScalaNumericAnyConversions

def toShortExact: Short

Преобразует этот BigDecimal в scala.Short, проверяя потерю информации. Если у этого BigDecimal есть дробная часть, отличная от нуля, или значение выходит за пределы допустимого диапазона для результата типа scala.Short, то выбрасывается java.lang.ArithmeticException.

def toString(): String

Возвращает строковое представление этого BigDecimal в десятичной форме.

returns

строковое представление объекта.

Definition Classes
BigDecimal → AnyRef → Any

def ulp: BigDecimal

def unary_-: BigDecimal

def underlying(): java.math.BigDecimal

Definition Classes
BigDecimal → ScalaNumericConversions → ScalaNumericAnyConversions → ScalaNumber

def unifiedPrimitiveEquals(x: Any): Boolean

Должен вызываться только после исключения всех известных типов, не являющихся примитивными. Этот метод не будет перенаправлен никуда после проверки на примитивные типы, чтобы избежать бесконечной рекурсии между equals и этим для неизвестных вариантов "Number".

Кроме того, этот метод следует вызывать только в том случае, если числовой тип счастлив быть преобразован в Long, Float и Double. Если, например, в него передается BigInt, намного больший, чем диапазон Long, он будет утверждать равенство с тем Long, который остался в его нижних 64 битах. Или BigDecimal с большей точностью, чем может содержать Double: то же самое. Нет способа, учитывая доступный интерфейс, предотвратить эту ошибку.

Attributes
protected
Definition Classes
ScalaNumericAnyConversions

def unifiedPrimitiveHashcode(): Int

Attributes
protected
Definition Classes
ScalaNumericAnyConversions

def until(end: BigDecimal, step: BigDecimal): Exclusive[scala.BigDecimal]

def until(end: BigDecimal): Partial[BigDecimal, Exclusive[BigDecimal]]

Создает частично сконструированный NumericRange[BigDecimal] в диапазоне [start;end), где start — целевой BigDecimal. Шаг должен быть предоставлен через метод "by" возвращаемого объекта, чтобы получить полностью сконструированный диапазон. Например:

val partial = BigDecimal(1.0) to 2.0       // not usable yet
val range = partial by 0.01                // now a NumericRange
val range2 = BigDecimal(0) to 1.0 by 0.01  // all at once of course is fine too
end

значение конца диапазона (исключительно)

returns

частично сконструированный NumericRange

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... ) @native()

def →[B](y: B): (BigDecimal, B)

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в ArrowAssoc[BigDecimal] с помощью метода ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc

Затененные неявные члены значения

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в any2stringadd[BigDecimal], выполняемым методом any2stringadd в scala.Predef.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: any2stringadd[BigDecimal]).+(other)
Определяющие классы
any2stringadd

def <(that: BigDecimal): Boolean

Возвращает true, если this меньше, чем that

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в Ordered[BigDecimal], выполняемым методом orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: Ordered[BigDecimal]).<(that)
Определяющие классы
Ordered

def <=(that: BigDecimal): Boolean

Возвращает true, если this меньше или равно that.

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в Ordered[BigDecimal], выполняемым методом orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: Ordered[BigDecimal]).<=(that)
Определяющие классы
Ordered

def >(that: BigDecimal): Boolean

Возвращает true, если this больше, чем that.

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в Ordered[BigDecimal], выполняемым методом orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: Ordered[BigDecimal]).>(that)
Определяющие классы
Ordered

def >=(that: BigDecimal): Boolean

Возвращает true, если this больше или равно that.

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в Ordered[BigDecimal], выполняемым методом orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: Ordered[BigDecimal]).>=(that)
Определяющие классы
Ordered

def compare(that: BigDecimal): Int

Результат сравнения this с операндом that.

Реализуйте этот метод, чтобы определить, как будут сортироваться экземпляры A.

Возвращает x, где:

    x < 0 когда this < that x == 0 когда this == that x > 0 когда this > that
Неявный
Этот член добавлен неявным преобразованием из BigDecimal в Ordered[BigDecimal], выполняемым методом orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: Ordered[BigDecimal]).compare(that)
Определяющие классы
Ordered

def compareTo(that: BigDecimal): Int

Результат сравнения this с операндом that.

Неявный
Этот член добавлен неявным преобразованием из BigDecimal в Ordered[BigDecimal], выполняемым методом orderingToOrdered в scala.math.Ordered.
Затенение
Этот неявно унаследованный член затеняется одним или несколькими членами в этом классе.
Для доступа к этому члену можно использовать указание типа:
(bigDecimal: Ordered[BigDecimal]).compareTo(that)
Определяющие классы
Ordered → Comparable

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/math/BigDecimal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API