我的方法无法舍入 1,66666 (5.0 / 3)
My method cant round 1,66666 (5.0 / 3)
public static double round(double number,int numberofdecimals){
int n=1;
for (int i = 1; i <= numberofdecimals;i++){
n=n*10;
}
double c =((number - Math.floor(number))*n);
c= Math.floor(c);
return (Math.floor(number) + (c/n));
}
我的方法完美地舍入了一些双打,但是当我把 ((5.0 / 3) ,2) 放在我的数字参数中时,它给了我 1.6600000 这是怎么回事?
假设您要进行标准舍入(1.5 舍入为 2.0;1.49 舍入为 1.0)然后尝试以下操作:
public static double round(double number,int numberofdecimals){
int n=1;
for (int i = 1; i <= numberofdecimals;i++){
n=n*10;
}
double c =((number - Math.floor(number))*n); // Here c = 66.6666666...
c= Math.floor(c + 0.5); // Now c is 67.0.
return (Math.floor(number) + (c/n)); // returns 1.67
}
public static double round(double number,int numberofdecimals){
int n=1;
for (int i = 1; i <= numberofdecimals;i++){
n=n*10;
}
double c =((number - Math.floor(number))*n);
c= Math.floor(c);
return (Math.floor(number) + (c/n));
}
我的方法完美地舍入了一些双打,但是当我把 ((5.0 / 3) ,2) 放在我的数字参数中时,它给了我 1.6600000 这是怎么回事?
假设您要进行标准舍入(1.5 舍入为 2.0;1.49 舍入为 1.0)然后尝试以下操作:
public static double round(double number,int numberofdecimals){
int n=1;
for (int i = 1; i <= numberofdecimals;i++){
n=n*10;
}
double c =((number - Math.floor(number))*n); // Here c = 66.6666666...
c= Math.floor(c + 0.5); // Now c is 67.0.
return (Math.floor(number) + (c/n)); // returns 1.67
}