Scala入门基础(3)运算应用

数据类型与运算应用

目录:

一。scala中运算符的优先级

二.浮点数精度问题

三。Scala 中的自增和自减运算

四。运算应用案例

 

 

一。scala中运算符的优先级081920f0dac24b4fb54cf5ad7f44e72b.jpg

0b24488a98984503af2b8a76c8853792.jpg 

 

二.浮点数精度问题

浮点数精度问题的解决

由于存在浮点数精度的问题,在比较浮点数的值时,两个看似应该相等的浮点数实际可能不相等和Java一样,在Scala中,可以使用以下两种方法解决浮点数精度问题。

·自定义一定的精度,例如可以指定数据只要满足小数点后两位即可,或者将钱数精确到分等。

·利用BigDecimal,Java和Scala中都有BigDecimal对象,利用它能够准确地解决浮点数精度问题。

 

三。Scala 中的自增和自减运算

在Scala中没有++和--这样的自增和自减运算处那么要想在Scala中实现类似于Java中的自增和自减运算,可以使用如下赋值运算符进行替代++:用赋值运算符+=代替++。

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

四。运算应用案例

1️⃣案例

[提问]:0.1+0.2==0.3?

(演示):

scala> 0.1+0.2

val res0:Doub1e=0.30000000000000004

 

scala> 0.1+0.2==0.3

val res1: Boolean = false

 

scala> 0.2+0.2== 0.4

val res2:Boolean = true

 

scala> BigDecimal(0.1) + BigDecimal(0.2)

val res3:scala.math.BigDecimal=0.3

 

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

val res4: Boolean = true

2️⃣案例

[提问]:

(演示):

scala> Int.MaxValue

val res5:Int= 2147483647

 

scala> var i =2147483647

var i: Int =2147483647

 

scala> var i = 2147483647 + 1

var i: Int = -2147483648

 

scala>BigInt("22222222222222222")*BigInt("111111111111111")

val res6:scala.math BigInt=246913580286119753.......(正常算出结果)

【解决方法:BigInt(数字字符串)】

3️⃣案例

object HelloWorld {

    def main(args:Array[String]):Unit={  

     //从键盘上得到一个数字,保持到变量input

     println("请输入你的age:")

      var input = scala.io.StdIn.readInt()

       println("你输入的内容是:"+ input)

       // input 的格式是一个字符串

        var i = input.toInt // 转成数值格式                println(s"你输入的内容是:$input")

       println(f"你输入的内容是:$i%.2f")

      }

}

4️⃣案例

[提问]:输入一个年龄判断是否成年

(演示):

object TestIf{

      def main(args:Array[string]): Unit ={

       //请用户输入一个年龄,判断是否成年

       // 提示

       printtn("请输入年龄:")

        var age =scala.io.StdIn.readInt()

        // 判断是否成年

       if(age >=18){

        println("成年")

        }else{

         println("未成年")

         }

    }

}

5️⃣案例

[提问]:输入一个正方形的边长(a)及一个长方形的长(b)与宽(c)比较两个图形的面积。如果长方形面积大,输出“RECTANGLE”;如果正方形面积大,输出“SQUARE”;如果一样大,输出“SAME”。

(演示):

object TestArea{

    def main(args:Array[String]):Unit={

        var a = scala.io.StdIn.readInt()

        var b = scala.io.StdIn.readInt( )

        var c = scala.io.StdIn.readInt( )

         print(a, b, c)

         if( a*a > b*c){

           // 正方形的面积大

          print("SQUARE")

      } else if( a*a < b*c ){

       // 长方形的面积大

       print("RECTANGLE")

       } else {

       print("SAME")

       }

    }

}

6️⃣案例

[提问]:输入一个分数,输出一个等级

90-100为A,89-90为B,79-70为C,69-60为D,59-0为E

(演示):

object TestScore{

def main(args:Array[string]):Unit={

   //输入一个分数:[0-100]

    val score = scala.io.stdin.readInt()

    var grade ="A"

    // 输出一个等级

   //[100,90] --A

   if(score >= 90 ) orade ="A"

    //[89,80] --B

    else if(score >= 80 ) grade = "B"

     //[79,70] -- C

     else if(score >= 70)grade ="c"

     // [69,60] -D

      else if(score >=60) grade ="D"

      //-… E

      else grade ="E"

       print(grade)

      }

}

7️⃣案例

[提问]:abc从大到小排序

(演示):

object TestMath {

def main(args:Array[string]):Unit={

var a =scala.io.StdIn.readInt( )

var b = scala.io.StdIn.readInt()

var c = scala.io.StdIn.readInt()

if(a >= b && b>=c){

print(a,b,c)

}

else if (a >= c && c >= b){

print(a, c. b)

}

else if(b >=a && a >= c){

print(b,a,c)

}

else if (b >= c && c >= a ){

print(b,c,a)

}

else if(c >= a && a >= b){

print(c,a,b)

}else{

print(c, b, a)

  }

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值