我很奇怪,爲什麼這是工作:差異相關與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