scala的位运算符
1·十进制转化二进制

2· & 按位与运算符。0&1 = 0, 1&0= 0 , 0&0 = 0, 1&1 =1
同1为1,否则为0

3·| 按位或运算符。0|1 = 1, 1|0= 1 , 0|0 = 0, 1|1 = 1
有1为1,否则为0

Scala中运算符的优先级
1·确定逻辑运算符优先级:逻辑与(&&)的优先级高于逻辑或(||),因此先计算 b && c,再与 a 进行 || 运算 "&&>||"
val a = true
val b = false
val c = false
println(a || b && c)
//答案true
2. 乘(*)除(/)模(%) > 加(+)减(-)
3. 算术(+-*/%) > 关系(><>=!=) > 赋值(=)
浮点数精度问题
0.1 + 0.2 == 0.3 ?
0.1 + 0.2 == 0.3 // false
由于精度的问题,小数的计算会存在误差
解决方案:使用BigDecimal()函数
println(BigDecimal(0.1) + BigDecimal(0.2)==BigDecimal(0.3))
大数问题
object w02 {
def main(args: Array[String]): Unit = {
val a =2147483647
val b=1
// val c =(a+b)/2 bug
val c = a - (a-b)/2
println(c)
//大数字做计算
//11111111111111111111111*222222222222222222222222222
val d =BigInt("11111111111111111111111") * BigInt("222222222222222222222222222")
println(d)
}
}
if语句
object w03 {
def main(args: Array[String]): Unit = {
println("请输入年龄:")
val age = scala.io.StdIn.readInt()
if (age >= 18)
println("成年")
else
println("未成年")
}
}
练习
object w04 {
def main(args: Array[String]): Unit = {
print("输入正方形的边长a")
val a =scala.io.StdIn.readInt()
print("长方形长b")
val b =scala.io.StdIn.readInt()
print("长方形宽c")
val c =scala.io.StdIn.readInt()
if (b*c > a*a) {
println("长方形面积大")
}else if(b*c<a*a){
println("正方形面积大")
}
else
println("一样大")
}
}
object w05 {
def main(args: Array[String]): Unit = {
print("输入一个正整数")
val a =scala.io.StdIn.readInt()
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("输入分数有误")
}
}
}