Следующая может делать то, что вы хотите, если то, что вы хотите сделать, это то, что я думаю, что вы хотите сделать:
long n = 2432902008176640000L; // original number
while (n > 9999) {
// while "more than 4 digits", "throw out last digit"
n = n/10;
}
// now, n = 2432
И a demo.
Примечание:
long
может представлять только значение, как большие, как 9223372036854775807 (что только около 4 раза больше, учитывая количество), прежде чем он будет переполнением. Если вы имеете дело с большими номерами, вам нужно переключиться на BigInteger или аналогичный. Та же методика может быть использована, обновлена для различий синтаксиса.
Как указано в fge, это не будет работать, поскольку оно написано над отрицательными числами; это может быть устранено либо изменением условия (то есть n < -9999
), либо первым получением абсолютного значения n (и последующим возвратом операции в конце).
Как сделано в ответе yinqiwen, n > 9999
может быть заменен на n >= (long)Math.pow(10, N)
(предпочтительно с использованием временной переменной), где N - количество десятичных цифр.
использование String.valueOf и затем подстроки –
Посмотреть это: http://stackoverflow.com/questions/8895337/how-do-i-limit-the -number-of-decimals-print-for-a-double – PaolaG
@ user..waht является типом данных? –