Scala基本运算2

61 阅读1分钟

Scala的位运算符

  1. & 按位与运算符。
  2. | 按位或运算符。
  3. ^ 按位异运算符。
  4. ~ 按位取反运算符。
  5. << 左移运算符。右边补零,放大。
  6. “>>”右移运算符。左边补零,缩小。
object work8 {
  def main(args: Array[String]): Unit = {
    var a = 5; //101
    var b = 4; //100
    println("5 & 4=" + (5&4))//0
    println("5 | 4=" + (5|4))//5
    println("5 ^ 4=" + (5^4))//1
    println("4 >> 2=" + (4>>2))//1
    println("4 << 2=" + (4>>2))//1
  }
}

Scala中的优先级

基本规则:

  1. 乘除模>加减。
  2. 算术>关系>赋值。
  3. && > || 。
object work9 {
  def main(args: Array[String]): Unit = {
    val a = true
    val b = false
    val c = false
    println(a || b && c)
    println(a|| (b && c))
    //先算 && ,后算||===>true
  }
}

大数问题

object work10 {
  def main(args: Array[String]): Unit = {
    //大数问题
    var a =2147483647
    var b =1
    println(a+b)

    //ab都是Int类型,所以a+b的结果也是Int类型
    // Int类型的最大值是2147483647
    //2147483647 + 1 = -2147483648

    // 计算他们的平均数
//    var c = (a+b)/2 //
//    var c = a -(a-b)/2//
//    println(c)

    val a1 = BigInt("123456789012345678901234567890")
    val b1 = BigInt("987654321098765432109876543210")
    println(a1 + b1)
    println(a1 * b1)
  }
}

用BigDecimal处理浮点数的精度问题

object work11 {
  def main(args: Array[String]): Unit = {
    val a = 0.1
    val b = 0.2
    val c = 0.3

    println(a+b==c)//false

    //BigDecimal:处理浮点数的精度问题
    println(BigDecimal(a) + BigDecimal(b) == BigDecimal(c))//true
  }