龙空技术网

Java修炼终极指南:26. 将浮点数四舍五入到指定的小数位数

启辰8 34

前言:

此刻各位老铁们对“java输出指定位数小数”大概比较讲究,各位老铁们都想要了解一些“java输出指定位数小数”的相关文章。那么小编也在网络上网罗了一些有关“java输出指定位数小数””的相关资讯,希望你们能喜欢,小伙伴们一起来学习一下吧!

考虑以下浮点数和我们想要保留的小数位数:

float v = 14.9877655f;  int d = 5;

因此,四舍五入后的预期结果是14.98777。我们可以通过至少三种方式直接解决这个问题。例如,我们可以依靠BigDecimal API,如下所示:

public static float roundToDecimals(float v, int decimals) {    BigDecimal bd = new BigDecimal(Float.toString(v));    bd = bd.setScale(decimals, RoundingMode.HALF_UP);    return bd.floatValue();  }

首先,我们从给定的浮点数创建一个BigDecimal数字。其次,我们将此BigDecimal缩放到所需的小数位数。最后,我们返回新的浮点数值。另一种方法可以依赖于DecimalFormat,如下所示:

public static float roundToDecimals(float v, int decimals) {    DecimalFormat df = new DecimalFormat();    df.setMaximumFractionDigits(decimals);    return Float.parseFloat(df.format(v));  }

我们通过setMaximumFractionDigits()定义格式,并简单地将此格式应用于给定的浮点数。返回的字符串通过Float.parseFloat()传递,以获得最终的浮点数。最后,我们可以应用一种更晦涩但自我解释的方法,如下所示:

public static float roundToDecimals(float v, int decimals) {    int factor = Integer.parseInt(                 "1".concat("0".repeat(decimals)));    return (float) Math.round(v * factor) / factor;  }

你可以在捆绑的代码中练习这些示例。请随意添加你自己的解决方案。

标签: #java输出指定位数小数