Scala(二)之“數值”

Scala中所有的數值都是對象,包括Byte、Char、Double、Float、Int、Long和Shart。與被稱爲“非數值類型”的Unit和Boolean一樣,這些數值類型都繼承擴展自AnyVal特質(trait)

數據類型的精確範圍值得查看:

scala> Short.MinValue
res45: Short = -32768

scala> Short.MaxValue
res46: Short = 32767

scala> Int.MinValue
res47: Int = -2147483648

scala> Int.MaxValue
res48: Int = 2147483647

複數和日期類型
複數–>Scala自帶的math類庫;
日期–>Joda Time

  1. 從字符串到數值

把一個字符串轉換成一個Scala的數值類型–>使用String的to*方法

scala> val s = "100"
s: String = 100

scala> s.toInt
res53: Int = 100

scala> s.toDouble
res54: Double = 100.0

scala> s.toFloat
res55: Float = 100.0

scala> s.toLong
res56: Long = 100

scala> s.toShort
res57: Short = 100

scala> s.toByte
res58: Byte = 100

scala> val b = BigInt("1")
b: scala.math.BigInt = 1

scala> val b = BigDecimal("1")
b: scala.math.BigDecimal = 1
  • 處理除十進制之外的數
scala> Integer.parseInt("1", 2)
res60: Int = 1

scala> Integer.parseInt("10", 2)
res61: Int = 2

scala> Integer.parseInt("100", 2)
res62: Int = 4

scala> Integer.parseInt("1", 8)
res63: Int = 1

scala> Integer.parseInt("10", 8)
res64: Int = 8
  1. 數值類型轉換

把一個數值類型轉換成另一中數值類型,不像Java中的強制類型轉換,使用在所有數值類型上都可用的to*方法。

scala> 19.45.toInt
res68: Int = 19

scala> 19.toFloat
res69: Float = 19.0

scala> 19.toDouble
res70: Double = 19.0

scala> 19.toLong
res71: Long = 19
  1. 重載默認數值類型

對一個數值型變量賦值時,Scala會自動把數值類型賦值給變量。定義一個數值類型變量時,可以重載其默認類型。

scala> val a = 1
a: Int = 1

scala> val a = 1d
a: Double = 1.0

scala> val a = 1f
a: Float = 1.0

scala> val a = 1000L
a: Long = 1000

也可以給變量增加類型聲明

scala> val a = 0:Byte
a: Byte = 0

scala> val a = 0:Int
a: Int = 0

scala> val a = 0:Short
a: Short = 0

scala> val a = 0:Double
a: Double = 0.0

scala> val a = 0:Float
a: Float = 0.0

在指定變量的數據類型時,推薦使用如下格式:

scala> val a = 0:Float
a: Float = 0.0

scala> val a:Byte = 1
a: Byte = 1

類型歸屬—-java中的向上轉型

scala> val s = "Dave"
s: String = Dave

scala> val p = s:Object
p: Object = Dave
  1. Scala中的++和–
    Scala中聲明爲val的字段是不可變的,它們不能遞減或者遞增,但是聲明爲var的Int類型變量可以通過+=,-=方法來修改。
scala> var a = 1
a: Int = 1

scala> a += 1

scala> a
res1: Int = 2

scala> print(a)
2
scala> a -= 1

scala> print(a)
1

浮點數值的比較

scala> val a = 0.3
a: Double = 0.3

scala> val b = 0.1 + 0.2
b: Double = 0.30000000000000004
  1. 隨機數

Scala中scala.util.Random生成隨機數。

scala> val r = scala.util.Random
r: util.Random.type = scala.util.Random$@139982de

scala> r.nextInt
res5: Int = -1286667537

scala> r.nextInt(100)
res6: Int = 60
  1. 創建一個數值區間、列表或者數組

區間

scala> val r = 1 to 10
r: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
// 設置步長
scala> val r = 1 to 10 by 2
r: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9)
// for循環中使用區間
scala> for(i <- 1 to 5) println(i)
1
2
3
4
5
// 使用until來創建區間
scala> for(i <- 1 until 5) println(i)
1
2
3
4

將區間轉換成其他序列

scala> val x = (1 to 10).toArray
x: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> val x = (1 to 10).toList
x: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  1. 格式化呢數值和金額
//數值格式化
scala> val pi = scala.math.Pi
pi: Double = 3.141592653589793

scala> println(f"$pi%1.5f")
3.14159
// 格式化金額
scala> val formatter = java.text.NumberFormat.getCurrencyInstance
formatter: java.text.NumberFormat = java.text.DecimalFormat@774c1

scala> println(formatter.format(123.456789))
¥123.46

scala> println(formatter.format(12345.6789))
¥12,345.68
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章