Scala基础运算2

57 阅读2分钟

位运算

  • & 按位与运算符 0&1=1,1&0=0,0&0=0,1&1=1
  • | 按位或运算符 0&1=0,1&0=1,0&0=1,1&1=0
  /**
   *  10进制      2进制
   *   0           0
   *   1           1
   *   2          10
   *   3          11
   *   4         100
   *   5         101
   *   6         110
   *
   *   -----------------
   *  1 1 0          1 1 0
   *    1 0            1 0
   * -----------------------
   *    1 0          1 1 0       */
    println(s"6&2=${6&2}")//   2--10
    println(s"6|2=${6|2}")//   6--110
  }
}

运算符的优先级

  1. 乘(*)除(/)模(%) > 加(+)减(-)
  2. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)
  3. && > ||
val result = 10 - 2 + 3 * 4 /2
println(result)// ------14
val a = true
val b = true
val c = false
println(a||b&&c)//  ------true

0.1+0.2 ==0.3 ? 精度问题

 val a = 0.1
  val b=0.2
  val c=0.3
// 精度问题
  println(1 +2 == 3)//        true
  println(0.1 + 0.2 ==0.3)//  false
  println(BigDecimal(0.1)+BigDecimal(0.2) == BigDecimal(0.3))//            true
  println(0.1+0.1==0.2)//     true

大数运算

val a = 2147483647/////为Int的最大值
    val b =1
   val d = (a+b)/2  // ---bug
    val c = a- (a-b)/2
    println(c) // 1073741824
    println(d)// -1073741824
// 大数运算
    // 111111111111111+111111111111112
    //val c :
    BigDecimal(1121111111111111)+BigDecimal(111111111111) 
  1. if 输入年龄,运行看是否成年
  print("请输入年龄")
  val age = scala.io.StdIn.readInt()
  if( age >= 18){
    println("成年")
  }else{
    println("未成年")
  }
}

2.比较面积

 // 读取用户输入的正方形边长
  print("请输入正方形的边长:")
  val a = scala.io.StdIn.readDouble()

  // 读取用户输入的长方形长和宽
  print("请输入长方形的长:")
  val b = scala.io.StdIn.readDouble()

  print("请输入长方形的宽:")
  val c = scala.io.StdIn.readDouble()
  
  // 比较面积并输出结果
  if (b*c > a*a) {
    println("长方形面积大")
  } else if (b*c < a*a) {
    println("正方形面积大")
  } else {
    println("一样大")
  }
}
  1. 输入正整数分数,输出等级符号
  print("请输入正整数分数:")
   val a  = scala.io.StdIn.readDouble()
   if (90 <= a & a<= 100){
     println("为A级")
   }else if(80 <= a & a<= 89){
     println("为B级")
   }else if(70 <= a & a<= 79){
   println("为C级")
   }else if(60 <= a & a<= 69){
   println("为D级")
   }```
}else if(0 <= a & a <= 59) {
  println("为E级")
} else {
  println("输出有误")-----此步骤可省略
}