Scala的位运算符
- & 按位与运算符。
- | 按位或运算符。
- ^ 按位异运算符。
- ~ 按位取反运算符。
- << 左移运算符。右边补零,放大。
- “>>”右移运算符。左边补零,缩小。
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中的优先级
基本规则:
- 乘除模>加减。
- 算术>关系>赋值。
- && > || 。
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)
//a和b都是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
}