我一直在試圖找到一種方法來確保雙「值」的長度不大於10.但是,由於我沒有將它舍入到一定數量的小數位,所以這變得難以編程。如何四捨五入到n長度(不是n個小數位)?
例如,1234567.8912和12.345678912都大於10位數,但它們必須舍入到不同的小數位數。我的邏輯是找到小數點出現的位置,並將double舍入爲「10位小數點前的位數」。
我創建了兩種不同的方法,兩種方法似乎都不能正常工作。
if ((Double.toString(value)).length()> 10){
int counter = 0;
double no_of_dec = 1;
double no_of_int = 1;
double new_value = 0;
for (int i = 0; i< (Double.toString(value)).length(); i++){
if ((Character.toString((Double.toString(value)).charAt(i))).equals(".")){
counter = 1;
} if (counter == 1){
no_of_dec = no_of_dec * 10;
} else if (counter == 0){
no_of_int = no_of_int * 10;
}
}
no_of_dec = no_of_dec/(no_of_int);
new_value = (double)Math.round(value * 100d/100d);
return Double.toString(new_value);
} else {
return Double.toString(value);
}
if ((Double.toString(value)).length()> 10){
double no_of_dec = 0;
double no_of_int = 0;
double new_value = 0;
for (int i = 0; i< (Double.toString(value)).length(); i++){
while (!(Character.toString((Double.toString(value)).charAt(i))).equals(".")){
no_of_int = no_of_int + 1;
}
}
no_of_dec = (Double.toString(value)).length() - no_of_int;
no_of_dec = no_of_dec * 10;
new_value = (double)Math.round(value * no_of_dec/no_of_dec);
return Double.toString(new_value);
} else {
return Double.toString(value);
}
}
如果號碼是'0.1234567891'沒有前導零得到算作是數字嗎? – 4castle
什麼_「他們將被舍入到不同的小數位數」_是什麼意思?但是,您能舉一個例子作爲輸入和預期輸出。 – snr
@ 4castle是的,它確實是 – assassinweed2