2012-03-09 70 views
0

我已经完成了一些搜索,但我无法确定如何执行我期望的操作。Java方法确定基于参数输出字符的次数

我有一个四舍五入数字的方法numberToRound和decimalPlaces现在硬编码四舍五入到小数点后四位,但我需要这是动态的。所以如果它是与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; 
    } 
} 

电流输出

PI四舍五入到3位是3.1416

我认为这样做的一些数学函数的某种像10 * 100到1000会轮到3但如果我需要4或5小数位甚至2我仍然需要它弄清楚如何获得找出它需要乘以ato的东西如果我改变了四舍五入的方式来处理一个特定的计算器,并且用户决定将它舍入到10或12或甚至更多或更少,如1个小数位,则可以对一英里长的if语句进行硬编码以处理。

回答

1
powerOfTen = Math.pow(10,decimalPlaces); 
numberToRound = (double)Math.round(numberToRound * powerOfTen)/powerOfTen; 

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

+0

完美无瑕地工作,或至少直到你用完小数位。经过10轮测试(Math.PI,12) – 2012-03-09 07:09:40