paqueteMatemáticas

El objeto del paquete scala.math contiene métodos para realizar operaciones numéricas básicas como funciones elementales exponenciales, logarítmicas, raíz y trigonométricas.

Todos los métodos reenvían a java.lang.Math a menos que se indique lo contrario.

Fuente
package.scala
Ver también

java.lang.Math

Supertipos lineales
CualquieraRef, Cualquiera

Miembros de tipo

final clase BigDecimal se extiende ScalaNumber con ScalaNumericConversions con Serializable con Ordered[BigDecimal]

BigDecimal representa números decimales en coma flotante de precisión arbitraria. De forma predeterminada, la precisión coincide aproximadamente con la de los números de coma flotante IEEE de 128 bits (34 dígitos decimales, HALF_EVEN modo de redondeo). Dentro del rango de números IEEE binary128, BigDecimal estará de acuerdo con BigInt para los códigos hash y de igualdad (y también coincidirá con los tipos primitivos). Más allá de ese rango, números con más de 4934 dígitos cuando se escriben en su totalidad, el hashCode de BigInt y BigDecimal se permite divergir debido a la dificultad de calcular de manera eficiente tanto la representación decimal en BigDecimal y la representación binaria en BigInt.

Al crear un BigDecimal a partir de una Double o Float, se debe tener cuidado ya que la representación de fracción binaria de Double y Float no se convierte fácilmente en una representación decimal. Hay tres esquemas explícitos disponibles para conversión. BigDecimal.decimal convertirá el número de punto flotante en una representación de texto decimal, y construirá un BigDecimal basado en eso. BigDecimal.binary expandirá la fracción binaria a la precisión solicitada o predeterminada. BigDecimal.exact expandirá la fracción binaria al número completo de dígitos, produciendo así el valor decimal exacto correspondiente a la fracción binaria de ese número de punto flotante. BigDecimal la igualdad coincide con la expansión decimal de Double: BigDecimal.decimal(0.1) == 0.1. Tenga en cuenta que desde 0.1f != 0.1, lo mismo no es cierto para Float. En lugar de, 0.1f == BigDecimal.decimal((0.1f).toDouble).

Para probar si un BigDecimal El número se puede convertir en un Double o Float y luego regrese sin pérdida de información usando uno de estos métodos, pruebe con isDecimalDouble, isBinaryDouble, o isExactDouble o el correspondiente Float versiones. Tenga en cuenta que BigInt‘s isValidDouble estará de acuerdo con isExactDouble, no la isDecimalDouble utilizado por defecto.

BigDecimal utiliza la representación decimal de números binarios de coma flotante para determinar la igualdad y los códigos hash. Esto produce respuestas diferentes a la conversión entre Long y Double valores, donde se utiliza la forma exacta. Como siempre, dado que el punto flotante es una representación con pérdidas, es aconsejable tener cuidado al asumir que la identidad se mantendrá en múltiples conversiones.

BigDecimal mantiene un MathContext que determina el redondeo que se aplica a ciertos cálculos. En la mayoría de los casos, el valor de la BigDecimal también se redondea a la precisión especificada por el MathContext. Para crear un BigDecimal con una precisión diferente a su MathContext, usar new BigDecimal(new java.math.BigDecimal(...), mc). El redondeo se aplicará a aquellas operaciones matemáticas que pueden cambiar drásticamente el número de dígitos en una representación completa, a saber, multiplicación, división y potencias. El argumento de la izquierda MathContext Siempre determina el grado de redondeo, si lo hay, y es el que se propaga mediante operaciones aritméticas que no aplican redondeo en sí mismas.

final clase Empezando se extiende ScalaNumber con ScalaNumericConversions con Serializable con Ordered[BigInt]

rasgo Equiv[T] extiende serializable

Un rasgo para representar relaciones de equivalencia. Es importante distinguir entre un tipo que se puede comparar por igualdad o equivalencia y una representación de equivalencia en algún tipo. Este rasgo es para representar a este último.

Un relación de equivalencia es una relación binaria en un tipo. Esta relación se expone como la equiv método del Equiv rasgo. La relación debe ser:

    reflexivo: equiv(x, x) == true para cualquier x de tipo T.simétrico: equiv(x, y) == equiv(y, x) para cualquier x y y de tipo T.transitivo: si equiv(x, y) == true y equiv(y, z) == true, luego equiv(x, z) == true para cualquier x, y, y z de tipo T.

Ya que

2,7

rasgo Fraccionario[T] extiende numérico[T]

Ya que

2.8

rasgo Integral[T] extiende numérico[T]

Ya que

2.8

rasgo LowPriorityEquiv extiende AnyRef

rasgo LowPriorityOrderingImplicits extiende AnyRef

rasgo Numérico[T] extiende el pedido[T]

rasgo Ordenado[A] se extiende Comparable[A]

Un rasgo para los datos que tienen un orden natural único. Consulte scala.math.Ordering antes de usar este rasgo para obtener más información sobre si debe usar scala.math.Ordering en su lugar.

Las clases que implementan este rasgo se pueden ordenar con scala.util.Sorting y se pueden comparar con operadores de comparación estándar (por ejemplo,> y <).

Ordered debe usarse para datos con un solo orden natural (como números enteros), mientras que Ordering permite múltiples implementaciones de pedidos. Una instancia de Ordering se creará implícitamente si es necesario.

scala.math.Ordering es una alternativa a este rasgo que permite definir varios ordenamientos para el mismo tipo.

scala.math.PartiallyOrdered es una alternativa a este rasgo para datos parcialmente ordenados.

Por ejemplo, cree una clase simple que implemente Ordered y luego ordenarlo con scala.util.Sorting:

case class OrderedClass(n:Int) extends Ordered[OrderedClass] 
	def compare(that: OrderedClass) =  this.n - that.n


val x = Array(OrderedClass(1), OrderedClass(5), OrderedClass(3))
scala.util.Sorting.quickSort(x)
x

Es importante que el equals método para una instancia de Ordered[A] Sea consistente con el método de comparación. Sin embargo, debido a las limitaciones inherentes a la semántica de borrado de tipos, no existe una forma razonable de proporcionar una implementación predeterminada de igualdad para instancias de Ordered[A]. Por lo tanto, si necesita poder usar la igualdad en una instancia de Ordered[A] debe proporcionarlo usted mismo al heredar o instanciar.

Es importante que el hashCode método para una instancia de Ordered[A] ser coherente con el compare método. Sin embargo, no es posible proporcionar una implementación predeterminada sensata. Por lo tanto, si necesita poder calcular el hash de una instancia de Ordered[A] debe proporcionarlo usted mismo al heredar o instanciar.

Ver también

scala.math.Ordering, scala.math.PartiallyOrdered

rasgo Ordenando[T] se extiende Comparador[T] con PartialOrdering[T] con serializable

El ordenamiento es un rasgo cuyas instancias representan cada una una estrategia para clasificar instancias de un tipo.

El objeto complementario de Ordering define muchos objetos implícitos para tratar subtipos de AnyVal (por ejemplo, Int, Double), String y otros.

Para ordenar instancias por una o más variables miembro, puede aprovechar estos ordenamientos integrados usando Ordering.by y Ordering.on:

import scala.util.Sorting
val pairs = Array(("a", 5, 2), ("c", 3, 1), ("b", 1, 3))

// sort by 2nd element
Sorting.quickSort(pairs)(Ordering.by[(String, Int, Int), Int](_._2))

// sort by the 3rd element, then 1st
Sorting.quickSort(pairs)(Ordering[(Int, String)].on(x => (x._3, x._1)))

Un pedido[T] se implementa especificando comparar (a: T, b: T), que decide cómo ordenar dos instancias ay b. Ejemplos de pedidos[T] puede ser utilizado por cosas como scala.util.Sorting para ordenar colecciones como Array[T].

Por ejemplo:

import scala.util.Sorting

case class Person(name:String, age:Int)
val people = Array(Person("bob", 30), Person("ann", 32), Person("carl", 19))

// sort by age
object AgeOrdering extends Ordering[Person] 
  def compare(a:Person, b:Person) = a.age compare b.age

Sorting.quickSort(people)(AgeOrdering)

Este rasgo y scala.math.Ordered proporcionan la misma funcionalidad, pero de diferentes formas. A un tipo T se le puede dar una única forma de ordenarse extendiendo Ordered. Con Ordering, este mismo tipo se puede clasificar de muchas otras formas. Ordered y Ordering proporcionan implícitos que les permiten usarse indistintamente.

Puede importar scala.math.Ordering.Implicits para obtener acceso a otros pedidos implícitos.

Anotaciones
@implicitNotFound(“Ningún orden implícito definido para $ T”.)
Ya que

2,7

Ver también

scala.math.Ordered, scala.util.Sorting

rasgo PartialOrdering[T] extiende Equiv[T]

Un rasgo para representar ordenamientos parciales. Es importante distinguir entre un tipo que tiene un orden parcial y una representación de orden parcial en algún tipo. Este rasgo es para representar a este último.

A pedido parcial es una relación binaria en un tipo T, expuesto como el lteq método de este rasgo. Esta relación debe ser:

    reflexivo: lteq(x, x) == true, para cualquier x de tipo T.anti-simétrico: si lteq(x, y) == true y lteq(y, x) == true luego equiv(x, y) == true, para cualquier x y y de tipo T.transitivo: si lteq(x, y) == true y lteq(y, z) == true luego lteq(x, z) == true, para cualquier x, y, y z de tipo T.

Además, una ordenación parcial induce una relación de equivalencia en un tipo T: x y y de tipo T son equivalentes si y solo si lteq(x, y) && lteq(y, x) == true. Esta relación de equivalencia se expone como equiv método, heredado del rasgo Equiv.

Ya que

2,7

rasgo Parcialmente ordenado[+A] extiende Cualquiera

rasgo ScalaNumericAnyConversions extiende Cualquiera

rasgo ScalaNumericConversions se extiende ScalaNumber con ScalaNumericAnyConversions

Miembros de valor

final val mi: Doble (2.718281828459045)

def IEEEremainder(x: Doble, y: Doble): Doble

final val Pi: Doble (3.141592653589793)

def abdominales(x: Doble): Doble

def abdominales(x: flotar): Flotar

def abdominales(x: largo): Largo

def abdominales(x: Int): En t

def acos(x: Doble): Doble

def addExact(x: largo, y: largo): Largo

def addExact(x: Int, y: Int): En t

def como en(x: Doble): Doble

def un bronceado(x: Doble): Doble

def atan2(y: Doble, x: Doble): Doble

Convierte coordenadas rectangulares (x, y) a polar (r, theta).

y

la coordenada de abscisas

X

la coordenada ordenada

devoluciones

los theta componente del punto (r, theta) en coordenadas polares que corresponde al punto (x, y) en coordenadas cartesianas.

def cbrt(x: Doble): Doble

Devuelve la raíz cúbica de lo dado. Double valor.

X

el número para sacar la raíz cúbica de

devoluciones

el valor ∛x

def hacer techo(x: Doble): Doble

def copySign(magnitud: flotar, signo: flotar): Flotar

def copySign(magnitud: Doble, signo: Doble): Doble

def porque(x: Doble): Doble

def aporrear(x: Doble): Doble

def decremento exacto(x: largo): Largo

def decremento exacto(x: Int): En t

def Exp(x: Doble): Doble

Devuelve el número de Euler e elevado al poder de un Double valor.

X

el exponente a subir e para.

devoluciones

el valor ea, dónde e es la base de los logaritmos naturales.

def expm1(x: Doble): Doble

def suelo(x: Doble): Doble

def floorDiv(x: largo, y: largo): Largo

def floorDiv(x: Int, y: Int): En t

def floorMod(x: largo, y: largo): Largo

def floorMod(x: Int, y: Int): En t

def getExponent(d: Doble): En t

def getExponent(f: flotar): En t

def hipot(x: Doble, y: Doble): Doble

Devuelve la raíz cuadrada de la suma de los cuadrados de ambos dados Double valores sin subdesbordamiento o desbordamiento intermedios.

los r componente del punto (r, theta) en coordenadas polares que corresponde al punto (x, y) en coordenadas cartesianas.

def incrementExact(x: largo): Largo

def incrementExact(x: Int): En t

def Iniciar sesión(x: Doble): Doble

Devuelve el logaritmo natural de a. Double valor.

X

el número para tomar el logaritmo natural de

devoluciones

el valor logₑ(x) dónde e es el número de Eulers

def log10(x: Doble): Doble

def log1p(x: Doble): Doble

def max(x: Doble, y: Doble): Doble

def max(x: flotar, y: flotar): Flotar

def max(x: largo, y: largo): Largo

def max(x: Int, y: Int): En t

def min(x: Doble, y: Doble): Doble

def min(x: flotar, y: flotar): Flotar

def min(x: largo, y: largo): Largo

def min(x: Int, y: Int): En t

def multiplicarExacto(x: largo, y: largo): Largo

def multiplicarExacto(x: Int, y: Int): En t

def negarExacto(x: largo): Largo

def negarExacto(x: Int): En t

def siguienteDespués(inicio: flotar, dirección: Doble): Flotar

def siguienteDespués(inicio: Doble, dirección: Doble): Doble

def nextDown(f: flotar): Flotar

def nextDown(d: Doble): Doble

def nextUp(f: flotar): Flotar

def nextUp(d: Doble): Doble

def pow(x: Doble, y: Doble): Doble

Devuelve el valor del primer argumento elevado a la potencia del segundo argumento.

X

la base.

y

el exponente.

devoluciones

el valor xy.

def aleatorio(): Doble

def rint(x: Doble): Doble

Devuelve el Double valor que tiene el valor más cercano al argumento y es igual a un número entero matemático.

X

a Double valor

devoluciones

el valor de punto flotante más cercano a a que es igual a un entero matemático.

def ronda(x: Doble): Largo

Devuelve lo más cercano Long al argumento.

X

un valor de punto flotante que se redondeará a un Long.

devoluciones

el valor del argumento redondeado al más cercanolong valor.

def ronda(x: flotar): En t

Devuelve lo más cercano Int al argumento.

X

un valor de punto flotante que se redondeará a un Int.

devoluciones

el valor del argumento redondeado al más cercano Int valor.

def cuero cabelludo(f: flotar, scaleFactor: Int): Flotar

def cuero cabelludo(d: Doble, scaleFactor: Int): Doble

def signum(x: Doble): Doble

def signum(x: flotar): Flotar

def signum(x: largo): Largo

Nota

Reenvía a java.lang.Long

def signum(x: Int): En t

Nota

Reenvía a java.lang.Integer

def pecado(x: Doble): Doble

def pecado(x: Doble): Doble

def sqrt(x: Doble): Doble

Devuelve la raíz cuadrada de a Double valor.

X

el número para sacar la raíz cuadrada de

devoluciones

el valor √x

def restarExacto(x: largo, y: largo): Largo

def restarExacto(x: Int, y: Int): En t

def broncearse(x: Doble): Doble

def tanh(x: Doble): Doble

def toDegrees(x: Doble): Doble

Convierte un ángulo medido en radianes en un ángulo aproximadamente equivalente medido en grados.

X

ángulo, en radianes

devoluciones

la medida del ángulo x en grados.

def toIntExact(x: largo): En t

def toRadians(x: Doble): Doble

Convierte un ángulo medido en grados en un ángulo aproximadamente equivalente medido en radianes.

X

un ángulo, en grados

devoluciones

la medida del ángulo x en radianes.

def ulp(x: flotar): Flotar

def ulp(x: Doble): Doble

objeto BigDecimal se extiende java.io.Serializable

Ya que

2,7

objeto Empezando se extiende java.io.Serializable

Ya que

2.1

objeto Equiv extiende LowPriorityEquiv con java.io.Serializable

objeto Fraccionario se extiende java.io.Serializable

objeto Integral se extiende java.io.Serializable

objeto Numérico se extiende java.io.Serializable

Ya que

2.8

objeto Ordenado

objeto Ordenando extiende LowPriorityOrderingImplicits con java.io.Serializable

Este es el objeto complementario del rasgo scala.math.Ordering.

Contiene muchos ordenamientos implícitos, así como métodos para construir nuevos ordenamientos.

objeto PartialOrdering se extiende java.io.Serializable