以预定义格式显示十进制值
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) }
}
我的计算结果低于示例值,我必须显示 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) }
}