专业的JAVA编程教程与资源

网站首页 > java教程 正文

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

temp10 2024-10-07 15:34:56 java教程 13 ℃ 0 评论


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

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

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;  
}


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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表