2017-02-27 4 views
0

ich brauche zwei int in einem einzigartigen Doppel zu verschmelzen. meinen Code und Beispiel:Zusammenführen von zwei int in einem Doppel C# mit Parse

int left = 1; 
int right = 38; 

werde ich in Doppel dieses Ergebnis erhalten möchten:

Doppel mergeVariable = 1,38

wie möglich merge zwei int in einem Doppel?

Ich habe dies versucht, aber funktionieren nicht

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

Dank

+0

Wie @DmitryBychenko aufgezeigt, können Sie sogar 'links verwenden .ToString (CultureInfo.CurrentCulture) + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator + right.ToString (CultureInfo.CurrentCulture); 'um mit der aktuellen Kultur statt mit der unveränderlichen zu arbeiten. –

Antwort

4

Sie wahrscheinlich CultureInfo.InvariantCulture angeben möchten:

int left = 1; 
    int right = 38; 

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

um nicht mit aktuellen Kultur (die habe ein beliebigen Dezimalzeichen, zB comma , als Russisch hat)

0

Sie können die ganze Zahl in Strings konvertieren, dies zu Strings kombinieren und dies in ein Double konvertieren.

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

greetz

+1

'Convert.ToDouble' in Ihrem Code verwendet' Culture.CurrentCulture'; Bitte geben Sie 'CultureInfo.InvariantCulture' an. –

0

Dies würde funktioniert auch:

int left = 1; 
int right = 38; 

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

Sie wollen' Math.Pow', nicht * Multiplikation *: Wenn 'right.Length == 2' erhalten Sie' links + rechts/20' –

+0

@DmitryBychenko Ja, Sie haben Recht . –

1

Mit diesem Ansatz versucht sein kann und auch die Umwandlung führt immer entweder Umwandlung zu verdoppeln oder nicht gelingen.

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

Diese Methode Dezimaltrennzeichens aus aktueller Kultur hinzufügen wird ..

 int left = 1; 
     int right = 38; 

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

Wie diese Antwort: answer

Auch die Variante mit den interpolierten Strings (wenn es eine Möglichkeit, sie zu nutzen) sieht prägnanter aus:

int left = 1; 
int right = 38; 

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