一.scala中的运算符
| 运算符 | 描述 |
|---|---|
| & | 按位与运算符 |
| / | 按位与运算符 |
| 按位异或运算符 | |
| ~ | 按位取反运算符 |
| << | 左移运算符 |
| >> | 右移运算符 |
| >>> | 无符号右移运算符 |
二.scala中运算符的优先级
| 优先级 | 运算符 | 关联性 | |
|---|---|---|---|
| 1 | () [] | 从左到右 | |
| 2 | ! ~ | 从右到左 | |
| 3 | * / % | 从左到右 | |
| 4 | + - | 从左到右 | |
| 5 | >> >>> << | 从左到右 | |
| 6 | > >= < <= | 从左到右 | |
| 7 | == != | 从左到右 | |
| 8 | & | 从左到右 | |
| 9 | 从左到右 | ||
| 10 | / | 从左到右 | |
| 11 | && | 从左到右 | |
| 12 | // | 从左到右 | |
| 13 | = += -= *= /= %= >>= <<= &= ^= | = | 从右到左 |
| 14 | , | 从左到右 |
三.scala的相等性
- ==在Scala和java中都是用于判断相等性的一个运算符。但在scala中,==比较的对象只有数值,只要==两边的值相等,就返回true。
- eq引用比较
四.scala中的自增和自减运算
在scala中没有++和--这样的自增和自减运算符,可用以下赋值运算符进行代替。
1.++:用赋值运算符+=代替++。
2.--:用赋值运算符代替--。
五.scala中的浮点精度问题
1.何为浮点数精度问题:计算机中所有的数字都是以二进制的形式存在,由于浮点数在转换成二进制数时存在一定的误差,所以这就是导致使用浮点数必然会存在的一个精度问题。(几乎所有的程序语言都存在浮点数精度问题)
2.浮点数精度问题的解决
(1)自定义一定的精度,列如可以指定数据只要满足小数后两位即可,或者将钱数精确到分等。
(2)利用BigDecimal。
```0.1 + 0.2 == 0.3 // false
```println(0.1 + 0.2 == 0.3)
println(BigDecimal(0.1) + BigDecimal(0.2) == BigDecimal(0.3))
五.大数问题
一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致计算异常。
```def main(args: Array[String]): Unit = {
var a = 2147483647
var b = 1
var c = (a + b)/2
println(c)
}//1+2147483647 = -2147483648
!另一种计算平均值的方法: a - (a-b)/2
```val a = BigInt("123456789012345678901234567890")
val b = BigInt("987654321098765432109876543210")
println(a + b)
println(a * b)