Scala 数値処理の知識
[履歴] (2016/02/13 02:22:23)
最近の投稿
注目の記事

汎用関数

import scala.math._

object Main {
  def main(args: Array[String]): Unit = {

    println(abs(-1)) // 絶対値
    println(max(1,2)) // 最大値
    println(min(1,2)) // 最小値
    println(pow(2, 10)) // 乗数
    println(sqrt(2.0)) // 平方根

    println(floor(9.9)) //=> 9.0 (切り捨て)
    println(ceil(9.9)) //=> 10.0 (切り上げ)
    println(round(9.9)) //=> 10 (四捨五入)

    println(E) // 自然対数
    println(Pi) // 円周率
    println(random) //=> [0,1) の乱数
  }
}

型変換

object Main {
  def main(args: Array[String]): Unit = {

    // asInstanceOf による変換
    var i: Int = 99
    var l: Long = i.asInstanceOf[Long]
    var d: Double = i.asInstanceOf[Double]

    // toHoge による変換
    l = i.toLong
    d = i.toDouble
    i = l.toInt
    i = d.toInt
  }
}

精度の高い計算

BigInt/BigDecimal を利用します。内部的に文字列として数値を記憶するため、桁落あふれや丸め誤差などは発生しませんが、処理速度は落ちます。

object Main {
  def main(args: Array[String]): Unit = {

    val bigI1 = BigInt("1234567890")
    val bigI2 = BigInt("1234567890")
    println(bigI1 + bigI2) //=> 2469135780

    val bigD1 = BigDecimal("0.000000000000000001")
    val bigD2 = BigDecimal("0.000000000000000009")
    println(bigD1 + bigD2) //=> 1.0E-17
  }
}
関連ページ