如何在另一个数字的末尾添加数字

时间:2016-03-06 03:34:28

标签: c# .net

我想将一个号码加入另一个号码而不是添加它。

示例:我希望1 + 1代替2制作11

我认为我能做的唯一事情是+ 1,但这只是2,而我希望它能成为11。

4 个答案:

答案 0 :(得分:5)

如果我理解你的要求,你想要这个:

1 + 1 = 11

而不是:

1 + 1 = 2

为此,只需将数字转换为字符串并将它们连接起来。然后,您可以将结果转换回数字。

string result = 1.ToString() + 1.ToString(); // or, "1" + "1"
result == "11";
int numberResult = Convert.ToInt32(result);

答案 1 :(得分:3)

您可以使用取幂和对数来避免字符串实例化和转换:

public static int Concat(int x, int y)
{
    return x * (int)Math.Pow(10, Math.Floor(Math.Log(y, 10)) + 1) + y;
}

这可以通过将x乘以10的幂来实现,其中y具有与y一样多的零,然后将Concat(1, 1) : 1 * 10 + 1 Concat(3, 54) : 3 * 100 + 54 Concat(28, 999) : 28 * 1000 + 999 Concat(76, 84215) : 76 * 100000 + 84215 加到其上。数学上: x ×10 ⌊log 10 y ⌋+ 1 + y

这将导致两个数字的十进制表示似乎已连接的结果。 例如:

Pow

如果您知道自己的数字通常较小,则可以编写热门路径以避免计算成本高昂的Logpublic static int Concat(int x, int y) { if (y < 10) return x * 10 + y; if (y < 100) return x * 100 + y; if (y < 1000) return x * 1000 + y; if (y < 10000) return x * 10000 + y; return x * (int)Math.Pow(10, Math.Floor(Math.Log(y, 10)) + 1) + y; } 操作:

installDebug

答案 2 :(得分:2)

如果您需要在代码中多次添加它,最好创建一个这样的函数:

public static int JoinNumber(int x, int y)
{
    int z = 0;
    string temp = Convert.ToString(x) + Convert.ToString(y);
    z = Convert.ToInt32(temp);
    return z;
}

public static int JoinNumber(int x, int y)
{
    return Convert.ToInt32(Convert.ToString(x) + Convert.ToString(y));
}

您需要根据您的要求为long和其他类型创建重载。

答案 3 :(得分:1)

你想要的只是:

string result = String.Concat(1, 1);

真的,就是这样。

如果出于不明原因,您想要返回整数值:

int result = Int32.Parse(String.Concat(1, 1));

小心溢出。