Например просто + складывает два числа и получается 1+2=3, но мне надо склеить, чтобы 1+2=12. Конвертировать в строку, а потом обратно в int не хочется. Я слышал в математике есть такая операция, не помню как называется, но работает также, так что наверняка это есть и в программировании.
Asked
Active
Viewed 557 times
2
-
5нет такой операции. Ты можешь умножить одно число на 10^(количество цифр) другого числа и сложить – Grundy Aug 04 '20 at 11:48
-
а известно заранее кол-во цифр? – axmed2004 Aug 04 '20 at 11:49
-
@axmed2004, числа ж передаются – Grundy Aug 04 '20 at 11:50
-
9Такая операция называется конкатенация, и это строковая операция. Математические операции не могут давать различный результат при изменении системы счисления. – Akina Aug 04 '20 at 11:59
-
https://ru.stackoverflow.com/a/453060/178988. Чисел или цифр? – Qwertiy Aug 04 '20 at 13:01
-
Ответ исправлен - вспомнил про 1. – Qwertiy Aug 04 '20 at 15:33
-
Есть такая операция. Называется "JavaScript" :) – Kir_Antipov Aug 04 '20 at 19:02
1 Answers
3
Если речь идёт о цифрах (или хотя бы второй элемент - цифра), то
var res = x * 10 + y;
Если это два числа и разрядность второго n, то
var res = x * Math.Pow(10, n) + y;
Если лидирующие нули не нужны у второго числа, то примерно (могут быть ошибки из-за погрешности вычислений и округления):
var res = x * Math.Pow(10, Math.Ceil(Math.Log10(y + 1))) + y;
или (не уверен в осмысленности):
var p = Math.Floor(Math.Log10(y));
while (p <= y) p *= 10;
var res = x * p + y;
или
var p = 10;
while (p <= y) p *= 10;
var res = x * p + y;
PS: Формулы не проверял, но вроде должны быть такие.
Qwertiy
- 123,725