2017-02-20 10 views
-6

私の文字列を解析して二重にしたい。私の問題は、newTimeの結果は800ですが、結果は8,00でなければなりません。C#二重にする文字列を解析する方法

string time = "08:00"; 
double newTime = double.Parse(time.Replace(':', '.')); 
+2

'8,00'は、私はあなたのコードを実行' 8'を取得し、有効なダブル – Liam

+2

ではありません:あなたはにしたい場合をフォーマット小数点使用newTime と数字を表します –

+1

あなたは何を達成しようとしていますか? HH:mm形式から時間数を計算しますか? – MadOX

答えて

0

Double.Parseの結果はDouble、ない文字列です。 ToStringを使用して、ダブルから文字列を出力する必要があります。

Double.Parseのオーバーロードを使用して、NumberStylesパラメータを設定する必要があります。 Floatの値を使用すると、指数表記が可能になります。

0
string time = "08:00"; 
double newTime = double.Parse(time.Replace(':', '.'), CultureInfo.InvariantCulture); 
0

あなたの問題は、カルチャがあなたの文字列に作成するものと異なる小数点記号を持つことです。

あなただけはそれをを行い、小数点区切りとして:を扱いたい場合は、この

string time = "08:00"; 
double newTime = double.Parse(time.Replace(":", Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator)); 
+0

newTimeはまだ8ですが、8,00が必要です –

+0

@AH次に文字列が必要です。二重に表示されるのは小数点のみです –

1

にそれを変更することができます。

string time = "08:00"; 

    // when parsing "time", decimal separator is ":" 
    double newTime = double.Parse(time, 
    new NumberFormatInfo() { NumberDecimalSeparator = ":" }); 

を魔法の定数とトリックを回避してくださいtime.Replace(':', '.')'.'のようになります。 newTime8で、8.008 == 8.0 == 8.00 == 8.000...以降)ではありません。

// F2 - format string ensures 2 digits after the decimal point 
    // Outcome: 8.00 
    Console.Write(newTime.ToString("F2")); 
関連する問題