编写一个四舍五入的函数,要求可以保留到小数后面的任意一位(如3.1415997保留到小数点后第5位后得到3.14160)double number(double d, int n)
{for(int i=0; i<n;i++)
d*=10;
d = Math.round(d);
for(int i=0;i<n;i++)
d/=10;
return d;
}这个算法会出现问题,应该是精度的问题吧。
哪位高手能给出个不用java.text.NumberFormat类和DecimalFormat类的算法,就只用简单的算法,最好只用lang包中的类,,可以么??????分不够再加!!!
{for(int i=0; i<n;i++)
d*=10;
d = Math.round(d);
for(int i=0;i<n;i++)
d/=10;
return d;
}这个算法会出现问题,应该是精度的问题吧。
哪位高手能给出个不用java.text.NumberFormat类和DecimalFormat类的算法,就只用简单的算法,最好只用lang包中的类,,可以么??????分不够再加!!!
{
double s1 = Math.pow(10, n);
d = Math.round(d*s1)/s1;
return d;
}
nf.setMinimumFractionDigits(5); // 设置精确到小数点后5位
System.out.println(nf.format(3.1415997));需import java.text.NumberFormat
-----------------------------------------
static double number(double d, int n)
{
double s1 = Math.pow(10, n);
double s2 = Math.pow(0.1, n);
d = Math.round(d*s1)*s2;
return d;
}
这样的话,又会长出好多来,晕了。
double bits = 1;
for (int i = 0; i < frac; i++)
bits *= 10;
return Math.round(num * bits) / bits;
}