Scala 四舍五入到小数指定位数 不足位填0

四舍五入 保留到个位

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值