Kotlin - 如何消除除前两位以外的小数
Kotlin - How to eliminate decimals except the first two
我想要实现的是保留 2 位小数并消除任何多余的小数,例如不进行任何舍入
3.556664 到 3.55(不四舍五入)
我尝试了以下方法
"%.2f".format(3.556).toFloat() // the result is 3.56
DecimalFormat("#.##").format(3.556).toFloat() // the result is 3.56
BigDecimal(3.556).setScale(2, RoundingMode.DOWN).toFloat() // the result is 3.56
val x = Math.floor(3.556 * 100) / 100
您可以在 DecimalFormat 上设置舍入模式:
DecimalFormat("#.##")
.apply { roundingMode = RoundingMode.FLOOR }
.format(3.556)
但是请注意,浮点数实际上并不以十进制(以 10 为底)存储数字,因此对于需要具有特定小数位数的数字来说,它不是一种合适的格式。当你将其转换为String时,你可能会发现小数位数发生了变化。要保证具体的小数位数,需要BigDecimal。
我想要实现的是保留 2 位小数并消除任何多余的小数,例如不进行任何舍入
3.556664 到 3.55(不四舍五入)
我尝试了以下方法
"%.2f".format(3.556).toFloat() // the result is 3.56
DecimalFormat("#.##").format(3.556).toFloat() // the result is 3.56
BigDecimal(3.556).setScale(2, RoundingMode.DOWN).toFloat() // the result is 3.56
val x = Math.floor(3.556 * 100) / 100
您可以在 DecimalFormat 上设置舍入模式:
DecimalFormat("#.##")
.apply { roundingMode = RoundingMode.FLOOR }
.format(3.556)
但是请注意,浮点数实际上并不以十进制(以 10 为底)存储数字,因此对于需要具有特定小数位数的数字来说,它不是一种合适的格式。当你将其转换为String时,你可能会发现小数位数发生了变化。要保证具体的小数位数,需要BigDecimal。