自增自减运算与浮点精度

45 阅读1分钟

如何判断两个值相等?

在Scala中,有两种方式:

1. == 比较的对象只有数值,只要==两边的值相等,就返回true。

2. eq 引用比较

def main(args: Array[String]): Unit = {  
  var s1 = "hello"  
  var s2 = new String("hello")  
  var s3 = new String("hello")  
  println(s1 == s2) // true  
  println(s1 eq  s3) // false  
}

在Scala中没有++和--这样的自增和自减运算符。

那么要想在Scala中实现类似于Java中的自增和自减运算,可以使用如下的赋值运算符进行替代。

++:用赋值运算符 +=1代替++。

--:用赋值运算符 -=1代替--。

浮点数精度问题

0.1 + 0.2 == 0.3 // false

由于精度的问题,小数的计算会存在误差。需要使用使用BigDecimal()函数。

BigDecimal(0.1) + BigDecimal(0.2) == BigDecimal(0.3)

image.png

大数问题

一种整数都有自己的表达范围,例如Int类型的最大值是2147483647,一旦超过了这个范围就会报错,或者是导致异常。

image.png