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。