我很奇怪,为什么这是工作:差异相关与InvariantCulture的
doubleValue = double.Parse(input[0].ToString(System.Globalization.CultureInfo.InvariantCulture).Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture);
虽然这不是:
doubleValue = Convert.ToDouble(input[0])
的一点是,有一个国家约30台机器(相同的Windows映像,相同的硬件,不同的位置)。虽然前20台机器可以使用Convert.ToDouble()
,但其他10台机器无法正确转换数值(它们在每种情况下都会丢失小数点,无论点或逗号如何)。
由于程序真的很复杂,有没有机会让Convert.ToDouble()
工作而不改变程序本身?
的另一点是,我尝试了不同的方法来我的字符串值转换为双,他们都不工作,但只有double.Parse()
...
而且也,是一般不好用Convert.ToDouble()
VOR字符串? (仅适用对象)
编辑:
我创造了这个方法,我的类中:
public static double ToDouble(string value, IFormatProvider provider)
{
if (value == null)
{
return 0.0;
}
return double.Parse(value, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent, provider);
}
,并把它称为(试过也点和逗号):
doubleValue = ToDouble(myTextBox.Text, CultureInfo.InvariantCulture);
结果:仍然不工作...
“我试过不同的方法......”包括Convert.ToDouble(text,CultureInfo.InvariantCulture)'? –
您可以更改程序或控制其他10台PC的区域设置。 –
是啊,我试过这个例子:'doubleValue = Convert.ToDouble(myTextBox.Text.Replace('。',','),System.Globalization.CultureInfo.InvariantCulture);'。此外,它是否指向逗号或其他方式无关紧要... – Essigwurst