2

Например просто + складывает два числа и получается 1+2=3, но мне надо склеить, чтобы 1+2=12. Конвертировать в строку, а потом обратно в int не хочется. Я слышал в математике есть такая операция, не помню как называется, но работает также, так что наверняка это есть и в программировании.

VillyFiki
  • 375
  • 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 Answers1

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