我在C#中从字符串ToDouble进行简单转换,如图所示。 抛出的异常说明了日期时间转换,但字符串都不是日期,而是分配给的变量是DateTime变量。有人可以帮忙吗?
谢谢。
答案 0 :(得分:1)
System.Convert.ToDouble
会将double.Parse
与当前文化一起使用。如果您的小数点分隔符不是.
,则可能会出现此异常。
由于智能感知只是试图帮助你,因此DateTime
会产生误导。实际上它是一个数字,而不是DateTime
。所以这不是你的错,但Visual-Studio团队可以改进这个消息。 FormatException
的{{1}}媒体资源不包含Message
。
听起来你想要不变的文化:
DateTime
如果您不确定格式是否有效,则应使用double.TryParse
:
double d = double.Parse("0.0005", CultureInfo.InvariantCulture);
答案 1 :(得分:0)
转换取决于您所在的国家/地区和文化设置。
如果您所在的国家/地区不使用.
作为小数点,则应使用CultureInfo.InvariantCulture
作为转换的第二个参数。或者,您可以指定本地文化中的数字,但是当您将应用程序提供给在其PC上使用其他文化的人时,这很容易出现问题。
答案 2 :(得分:0)
不确定为什么会收到错误...但你尝试过这样的事吗?如果是这样,它会给出同样的错误吗?
即。 double.Parse默认使用当前文化。阅读of the answer posted by Mr Skeet in this SO post
string sVal ="0.0005";
double dVal = 0.0;
if (double.TryParse(sVal, out dVal))
{
// Success !!
}
else
{
// Could not convert
}