2016-03-06 113 views
1

我想將號碼加入另一個號碼而不是添加號碼。如何在另一個號碼的末尾添加號碼

示例:代替1 + 1製作2,我想讓它製作11

我想我唯一能做的事情就是+ 1,但只是使它2,我想它,使其11

+4

你甚至在問什麼? –

回答

5

如果我理解你的要求,你要這樣:

1 + 1 = 11 

不是:

1 + 1 = 2 

要做到這一點,只投了數字串和將它們連接起來。然後,您可以將結果轉換回數字。

string result = 1.ToString() + 1.ToString(); // or, "1" + "1" 
result == "11"; 
int numberResult = Convert.ToInt32(result); 
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)); 
} 

您需要創建長期過載和其他類型根據您的要求。

3

您可以通過使用指數和對數避免串實例化和轉換:

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

此作品由10的冪有一樣多的零作爲y具有數字乘以x,那麼就總結y到它。在數學上:X×10 ⌊log ý⌋+ 1 + ÿ

這將導致一個結果,兩個數字的小數表示看起來已經連接在一起。 例如:

Concat(1, 1)  : 1 *  10 +  1 
Concat(3, 54)  : 3 * 100 + 54 
Concat(28, 999) : 28 * 1000 + 999 
Concat(76, 84215) : 76 * 100000 + 84215 

如果你知道你的號碼通常是小,你可以寫熱路徑,以避免計算昂貴PowLog操作:

public 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; 
} 
+0

我的意思是......你沒有錯。 – Steve

1

所有你想要的是:

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

真的,就是這樣。

如果你想回去的整數值的模糊的原因:

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

提防溢出。