2017-02-27 42 views
0

我需要合併兩個int在一個唯一的雙。 我的代碼和示例:合併兩個int在一個雙c#與分析

int left = 1; 
int right = 38; 

我會希望在雙得到這樣的結果:

雙mergeVariable = 1.38

如何可能合併兩個int在一個雙?

我都試過,但不起作用

double result = double.Parse(left.ToString() + "." + right.ToString()); 

感謝

+0

正如@DmitryBychenko指出的,你甚至可以用'left .ToString(CultureInfo.CurrentCulture)+ CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + right.ToString(CultureInfo.CurrentCulture);'使用當前的文化而不是不變的文化。 –

回答

4

你可能想指定CultureInfo.InvariantCulture

int left = 1; 
    int right = 38; 

    double result = double.Parse(
    left.ToString() + "." + right.ToString(), 
    CultureInfo.InvariantCulture); 

使用當前區域性爲了(可有一個任意小數點分隔符,例如逗號,爲俄羅斯擁有)

0

您可以將整數轉換成字符串,結合這串並轉換這雙。

left.toString(); 
right.toString(); 
string combinedLeftRight = left + "." + right; 
double mergeVariable = Convert.ToDouble(combinedLeftRight); 

格爾茨

+1

你的代碼中的Convert.ToDouble使用'Culture.CurrentCulture';請指定'CultureInfo.InvariantCulture' –

0

這也工作:

int left = 1; 
int right = 38; 

double result = left + right/Math.Pow(10, right.ToString().Length); 
+0

你想'Math.Pow',不*乘*:如果'right.Length == 2'你會得到'左+右/ 20' –

+0

@DmitryBychenko是的,你說得對。 –

1

你可能會嘗試用這種方法,也得到轉換結果要麼轉換成功翻番與否。

try 
{ 
    int left = 1; 
    int right = 38; 
    double Both; 
    bool ConverstionSucceed = double.TryParse((left + "." + right), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out Both); 
} 
catch (Exception ex) 
{ 
} 
0

此方法將從目前的文化加小數點分隔符..

 int left = 1; 
     int right = 38; 

     double result = Convert.ToDouble(
      left.ToString() + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + right.ToString()); 
0

像這樣的回答:answer

還與插弦變異(如果有使用它們的可能性)看起來更簡潔:

int left = 1; 
int right = 38; 

double result = double.Parse($"{left}.{right}", CultureInfo.InvariantCulture);