C#如何解析一个字符串来加倍

时间:2017-02-20 10:57:14

标签: c# parsing

我想解析我的字符串加倍。我的问题是newTime的结果是800,但结果应该是8,00。

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

4 个答案:

答案 0 :(得分:1)

如果您想将:视为小数点分隔符,只需执行

  string time = "08:00";

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

尝试使用'.'中的time.Replace(':', '.')等魔术常量来避免欺骗。请注意,newTime将是8,而不是8.00(自8 == 8.0 == 8.00 == 8.000...起)。如果您想在小数点后使用格式 代表 newTime 两个数字:

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

答案 1 :(得分:0)

Double.Parse的结果是Double,而不是字符串。您需要使用ToString输出双精度字符串。

您还应该使用具有Double.Parse参数的NumberStyles重载。使用Float值可以使用指数表示法。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您的问题是您的文化与您在字符串中创建的内容有不同的小数点分隔符。

您可以将其更改为此

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