数据类型与运算应用
目录:
一。scala中运算符的优先级
二.浮点数精度问题
三。Scala 中的自增和自减运算
四。运算应用案例
一。scala中运算符的优先级
二.浮点数精度问题
浮点数精度问题的解决
由于存在浮点数精度的问题,在比较浮点数的值时,两个看似应该相等的浮点数实际可能不相等和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)
}
}