-2

我需要帮助弄清楚如何将字符串分配给双精度。

double value = "myString";

我有double value = double.Parse("myString"); ,但这会抛出一个FormatException.

我试图像这样连接:

string stringValue += doubleValue.toString() + intValue.ToString;
return stringValue;
4

5 回答 5

3

我有双值 = double.Parse("myString"); 但这会引发 string.Format 错误。

是的,这就是您在这种情况下想要的行为。“myString” 没有数值,所以给出正确的数值是抛出格式错误。

double.Parse("1.2")是否有效取决于所使用的文化是 1.2 表示为“1.2”还是“1,2”的文化。double.Parse("1.2", CultureInfo.InvariantCulture) 将始终返回 1.2,因为它特定于使用哪种文化。

double.TryParse 在有人可能传递不适当的字符串(如“myString”)时很有用,因为它返回一个表示成功或失败的布尔值,而不是抛出异常。

于 2012-08-12T16:51:07.560 回答
1

解析它,假设 myString 是一个有效的双字符串表示(例如“3.49”、“1394.293”、“-1.30E3”)

double value = double.Parse(myString)

大多数(全部?)普通数值类型都有解析方法。如果您不确定它是否有效,请使用 TryParse(尝试将“abc”解析为数字将引发异常)

@LB 对于自定义解析,您可以像这样定义 NumberFormatInfo :

    var a = new System.Globalization.NumberFormatInfo()
    a.NumberDecimalSeparator = ",";
    a.NumberGroupSeparator = ".";
    double d = Double.Parse("1.000.000,5", a);
于 2012-08-12T16:40:57.863 回答
1

您可以使用 TryParse

string x = "1234";
double y;
if(double.TryParse(x, out y))
{
    Console.WriteLine("success y = " + y.ToString());
}
else
{
    Console.WriteLine(x + " could not be converted to a double");
}
于 2012-08-12T16:41:59.427 回答
0

您不能将字符串分配给双精度数。不可能。双精度型是一种数字类型。字符串不是。

如果您解析一个双精度字符串,则有可能。

var doubleThing = Double.Parse("9.99");
于 2012-08-12T16:40:04.607 回答
0
double.Parse(string);

如果格式不正确,可以并且将通过异常。你想解析什么?

double.TryParse("1.05", out value);

如果解析成功或失败,将返回 true 或 false。

于 2012-08-12T16:42:34.773 回答