【问题标题】:Java Methods determine how many times to output char based off of paramatersJava 方法根据参数确定输出 char 的次数
【发布时间】:2024-01-17 19:57:01
【问题描述】:

我进行了一些搜索,但无法确定如何做我想做的事情。

我有一种舍入数字的方法,它现在采用参数 numberToRound 和 decimalPlaces 它被硬编码为四舍五入到小数点后 4 位,但我需要它是动态的。因此,如果使用 round(3.1415926536, 3) 调用它,它将四舍五入到小数点后 3 位而不是 4 但我无法弄清楚如何让 Java 采用该 3 并理解我希望无论如何都要打印或处理 000。

关于如何做到这一点的任何想法?下面是我输入的示例代码,但它被硬编码到 4 个位置,因为我尝试的任何东西都无法正确编译

public class round
{
  public static void main(String[] args) 
  {
      System.out.println("pi rounded to 3 places is " + roundPI(3.1415926536, 3));
  }
  public static double roundPI(double numberToRound, int decimalPlaces)
  {

    numberToRound= (double)Math.round(numberToRound*10000)/10000;
    return numberToRound;
  }
}

电流输出

四舍五入到 3 位的 pi 是 3.1416

我考虑过使用某种数学函数(例如 10*100)来达到 1000,它会四舍五入到 3,但是如果我需要 4 或 5 个小数位甚至 2,我仍然需要它来弄清楚如何得到弄清楚它需要乘以什么而不用硬编码一英里长的 if 语句来处理如果我将四舍五入更改为像一个兴趣计算器并且用户决定他们希望它四舍五入到 10 或 12 甚至或多或少像 1 个小数地点。

【问题讨论】:

    标签: java methods parameter-passing rounding


    【解决方案1】:
    powerOfTen    = Math.pow(10,decimalPlaces);
    numberToRound = (double)Math.round(numberToRound * powerOfTen) / powerOfTen;
    

    这将四舍五入到正确的位数。但是当您打印时,您还需要确保打印正确数量的尾随零。为此,您可以使用System.out.printf

    【讨论】:

    • 完美运行,或者至少在您用完小数位之前。测试超过了我用 round(Math.PI, 12) 获得的 10