基本运算2

61 阅读1分钟

Scala的运算符

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

Scala中的优先级

基本规则

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

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

object zzz {
  def main(args: Array[String]): Unit={
    var a =0.1
    var b =0.2
    var c =0.3
    println(a + b == c) // false
    // BigDecimal:处理浮点数的精度问题
    println(BigDecimal(a) + BigDecimal(b) == BigDecimal(c))//true
  }
}

大数问题

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

    println(a+b)

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

    //计算他们的平均数
 //   var c = (a+b)/2 //
 //   var c = a - (a-b)/2//
 //   print(c)
    var a1 = BigInt("123456789012345678901234567890")
    var b1 = BigInt("987654321098765432109876543210")
    println(a1 + b1)
    println(a1 * b1)
  }
}