以预定义格式显示十进制值

Displaying decimal values with a predefined format

我的计算结果低于示例值,我必须显示 2 个小数点而不四舍五入。

-0.00123, -2.222154, -23.154, -2.13, -0.10001, -10.0012, -1.0023, 0.23, 0.56474, 1.000, 11.1111, 1.89566

我正在使用 十进制格式 : 0.00 所以,

在使用 "0.00" 时,显示值为 -0.00128 但不显示 -2.2386

根据我的需要,哪种格式应该是正确的十进制格式?我已经阅读了这里的文档:https://developer.android.com/reference/java/text/DecimalFormat#:~:text=A%20DecimalFormat%20comprises%20a%20pattern,read%20from%20localized%20ResourceBundle%20s.

但是,仍然有困惑所以在这里发布问题。

你可以试试:

import java.math.RoundingMode;
import java.text.DecimalFormat;

class Scratch {
    public static void main(String[] args) {
        String srcNumber = "-2.2386";
        DecimalFormat formatter = new DecimalFormat("0.00");
        formatter.setRoundingMode(RoundingMode.DOWN);
        srcNumber = formatter.format(Double.valueOf(srcNumber));
        System.out.println(srcNumber);
    }
}

您可以将 BigDecimal 与所需的比例(例如 2)和舍入模式(例如 HALF_UP)一起使用,如下所示:

import java.math.BigDecimal
import java.math.RoundingMode

fun main() {
    val roundingMode = RoundingMode.HALF_UP
    val doubles: List<Double> = listOf(
        -0.00123, -2.222154, -23.154, -2.13, -0.10001, -10.0012,
        -1.0023, 0.23, 0.56474, 1.000, 11.1111, 1.89566
    )
    doubles.map { BigDecimal(it).setScale(2, roundingMode) }.also { println(it)  }
    // [0.00, -2.22, -23.15, -2.13, -0.10, -10.00, -1.00, 0.23, 0.56, 1.00, 11.11, 1.90]
}

更多功能风格的相同方法(部分功能而不是常量):

val fancyRound: (scale: Int, roundingMode: RoundingMode) -> (Double) -> BigDecimal =
    { scale, roundingMode ->
        { d -> BigDecimal(d).setScale(scale, roundingMode) }
    }

fun main() {
    ...
    val myRound = fancyRound(2, RoundingMode.HALF_UP)
    doubles.map { myRound(it) }.also { println(it) }

}