读书人

四舍五入的有关问题高手抢分请进!

发布时间: 2011-12-30 23:30:45 作者: rapoo

四舍五入的问题,高手抢分请进!!!
编写一个四舍五入的函数,要求可以保留到小数后面的任意一位(如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包中的类,,可以么??????

分不够再加!!!

[解决办法]
static double number(double d, int n)
{
double s1 = Math.pow(10, n);

d = Math.round(d*s1)/s1;

return d;
}
[解决办法]
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMinimumFractionDigits(5); // 设置精确到小数点后5位
System.out.println(nf.format(3.1415997));

需import java.text.NumberFormat
[解决办法]
转字符串,获取小数点位置
然后根据精度要求取指定位数的数字,如果大于4就前面位数+1,然后截取字符串
[解决办法]
考虑到最后可能输出 "0 ",这样的方法只能输出为 String,而非 double 类型。

读书人网 >J2SE开发

热点推荐