四舍五入 保留到个位
val d1 = 1.4
println(d1.round)
val d2 = 1.5
println(d2.round)
- 运行结果
1
2
四舍五入 保留到小数后N位
基于其保留到个位数的特点,若要保留小数后N位,则需要先将数进行放大,四舍五入后再缩小即可实现,放大缩小倍数为10的N次方。如下所示
注意:在最后是除了一个浮点数,如“100.0”,因为四舍五入后的数为整数型,直接除整数其结果会舍去小数部分(结果为整数型),故需除一个浮点数
- 保留小数后2位
val d1 = 1.602
val t1 = d1 * 100
println(t1.round / 100.0)
val d2 = 1.607
val t2 = d2 * 100
println(t2.round / 100.0)
- 运行结果
1.6
1.61
四舍五入 保留到小数后N位 不足位填0
上面的我们实现的指定小数位数的四舍五入,但第一个数据被四舍五入后,小数第二位未被填0,因此我们在下面将实现不足位数填0(返回值为String)
// 初始值
val d = 1.602
// 四舍五入保留小数后两位并将其转换为字符型
var r = ((d * 100).round / 100.0).toString
// 使用split函数正则表达式匹配“.”,以点号分割后,提取其小数部分,存入变量t
var t = r.split("\\.")(1)
// 小数部分位数小于阈值的,在其小数位添加“0”
while(t.length < 2){
t += "0"
r += "0"
}
println(r)
- 运行结果
1.60
split说明
根据给定正则表达式的匹配拆分此字符串
String[] split(String regex)
根据匹配给定的正则表达式来拆分此字符串
String[] split(String regex, int limit)
参考文献
1.4.1 scala 浮点数四舍五入 https://www.fashici.com/tech/271.html
Scala 字符串 https://www.runoob.com/scala/scala-strings.html
正则表达式 — 转义 “ \ “ ,特殊字符注意事项(七) https://blog.csdn.net/m0_52409770/article/details/123514539