我做了一些搜索,我无法确定如何做我想做的事。
我有一个舍入数字的方法,它采用参数numberToRound和decimalPlaces,现在它被硬编码为四位小数,但我需要它是动态的。因此,如果它被圆形(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;
}
}
当前输出
pi四舍五入至3.1416
我考虑使用某种类型的数学函数(如10 * 100)来达到1000,这将会转到3但是如果我需要4或5位小数甚至2,我仍然需要它来弄清楚如何获得找出它需要乘以什么,而不是硬编码一英里长的if语句来处理如果我改变我的四舍五入到一个有趣的计算器并且用户决定他们希望它舍入到10或12或甚至更多或更少像1小数的地方。
答案 0 :(得分:1)
powerOfTen = Math.pow(10,decimalPlaces);
numberToRound = (double)Math.round(numberToRound * powerOfTen) / powerOfTen;
这将四舍五入到正确数量的地方。但是在打印时,还需要确保打印正确数量的尾随零。为此,您可以使用System.out.printf
。