надо чтоб он его круглял до 30000 к примеру, как это реализовать?
Я бы делил на 10000 и просто округлял. А потом бы обратно множил на 10000
а если 1000000 будет?
ну получится на выходе тоже самое разаделил округлит умножит. Не понял подвоха.
округлять или до ближайшего большего? и какой шаг? Делите на шаг, потом делайте округление, потом умножайте на шаг
Уже все спасибо, разобрался, делю в начале на 1000, потом округляю десятичную, и умножаю на 1000, все работает как надо😁
так 28000 до 30000 не получится округлить
Магия :)
ну значит, вы делаете не то, что написали
Вам нужно только десяти тысячные?
Ну сделал так, (28000/1000).celf()*1000 работает
По хорошему вам надо на 10 делить и увеличивать 10,100,1000,10000,100000 пока вы не получите остаток от деления, как получите остаток, то надо разделить на предыдущее значение (10,100,1000...) потом округлить и потом умножить на значение.
а как будет выглядет это кодом?)
int increment = 10; while (число % increment == 0){ increment*=10; }
нет, для 12345 это не сработает
как тогда в этом случае быть?
сравнивайте результат целочисленного деления с нулем
в таком случае дает 10к а должен давать 30к
округляйте потом до тех самых 10к
а можно кодом пожалуйста
шаг-то какой нужен? в 5 или в 10?
допустим если число 380, то будет 400, если 4к то даст 5к, если 11к то 10к должен давать
плохое условие. Функция округления должна быть идемпотентна, а у вас получается round(3800) == 4000; round(4000) == 5000. Это точно правильное условие?
🤔🤔🤔 давайте я уточню тогда еще, вы правы плохое условие
нужно округлять так, до тысячных и сотых, округлять надо так же в большую сторону, если 380, то 400, если 27.800, то 28
а если 30? 24000? 23400?
(если 30 то 30, если 24 то 24) т.к округляем до тысячных, если 23.400 то 24000, т.к округляем в большую сторону
округленное число должно быть кратно 10,100,1000...?
да получается так и в большую сторону всегда, в меньшую быть не может
int funcA (int value, int multiplicator){ int temp =value % multiplicator; if (temp !=0){ double stepOne =(value / multiplicator); int stepTwo = stepOne.ceil(); int stepThree = stepTwo*multiplicator; return stepThree;} else{ funcA(value,multiplicator*10);} } null safety осталось пофиксить, но я гляжу условия меняются на лету.
int round(int v) { final n = pow(10, v.toString().length - 1).toInt(); return (v / n).ceil() * n; }
о работает, спасибо 🙂
Обсуждают сегодня