在 java 中截断浮点数和双精度

2022-09-04 05:49:23

我想在java中截断一个浮点数和一个双精度值。

以下是我的要求:1.如果我有12.49688f,它应该打印为12.49而不舍入2。如果它是双精度的12.456,则应打印为12.45而不舍入3。在任何情况下,如果值类似于 12.0,则只应将其打印为 12。

条件3应始终牢记在心。它应该与截断逻辑并发。


答案 1

试试这个-

DecimalFormat df = new DecimalFormat("##.##");
df.setRoundingMode(RoundingMode.DOWN);
System.out.println(df.format(12.49688f));
System.out.println(df.format(12.456));
System.out.println(df.format(12.0));

在这里,我们使用十进制格式化程序进行格式化。舍入模式设置为 DOWN,因此它不会自动舍入小数位。

预期结果是:

12.49
12.45
12

答案 2
double d = <some-value>;
System.out.println(String.format("%.2f", d - 0.005);