Я пытался найти способ убедиться, что длина двойного значения не больше 10. Однако это становится трудно программировать, так как я не округлю его до определенного количества десятичных знаков.Как объединить удвоенную и n длину (не n десятичных знаков)?
Например, 1234567.8912 и 12.345678912 оба больше, чем 10 цифр, однако они должны быть округлены до разного количества знаков после запятой. Моя логика заключалась в том, чтобы найти место десятичной точки и округлить двойное значение до «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