Уважаемые хелп!!! Задача у меня была следующая, написать деление двух int , результат double , потом в этом double анализируя 12 знаков после запятой найти период , пример (1/3 = 0,(3), 7/12 = 0,58(3), 1/2 = 0,5)
Написал отдельно деление (принимает два инта , возвращает double) отдельно поиск периода (принимал double, возвращал строку).
Столкнулся с проблемой , деление возвращает 31243643,6 (при анализе на период ожидается такой и вывод, так как периода нет), но при передаче этого числа параметром в метод поиска периода оно уже в виде 3,.....Е-7 (то есть в экпоненциалной записи) и такую чепуху и выводит , причем такое происходит не со всеми числами (я так понимаю что проблема в представлении чисел с точкой в памяти) . проблему решил возвратом после деления стринги и передачи для анализа периода тоже стринги.
Eсть ли другой способ бороться с этим!!!
Два варианта кода
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(doubleDivision(468654654,15));
}
//static String doubleDivision(int divident, int divisor) {
static double doubleDivision(int divident, int divisor) {
int symbolAfterComma = 0;
StringBuilder result = new StringBuilder();
while (symbolAfterComma <= 11 && divident != 0) {
if (divident >= divisor) {
int divCounter = 0;
while (divident >= divisor) {
divident = divident - divisor;
divCounter++;
}
result.append(divCounter);
} else {
if (symbolAfterComma == 0) {
result.append(".");
}
divident = divident * 10;
while (divident < divisor) {
divident = divident * 10;
result.append("0");
symbolAfterComma++;
}
int divCounter = 0;
while (divident >= divisor) {
divident = divident - divisor;
divCounter++;
}
symbolAfterComma++;
result.append(divCounter);
}
}
//return result.toString();
return Double.valueOf(result.toString());
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости