我想解析我的字符串加倍。我的问题是newTime的结果是800,但结果应该是8,00。
string time = "08:00";
double newTime = double.Parse(time.Replace(':', '.'));
答案 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) );