我正在浏览另一位开发人员的一些代码,我发现一些代码似乎......非常丑陋且不必要。
据我所知,在解析字符串时,我们需要正确使用文化信息,否则你可以进入" 1.2" vs" 1,2"类型问题。在这种情况下,开发人员使用的是NumericUpDown,它存储为小数。
float fValue = System.Convert.ToSingle(numericUpDown1.Value, System.Globalization.CultureInfo.InvariantCulture)
我的问题是: - 以下代码是等效的吗? - 文化信息会得到妥善处理吗? - 这个演员会抛出异常吗?
float fValue = (float)numericUpDown1.Value;
如果它们不相等(或安全),请您解释原因并提出正确的"溶液
提前致谢!
答案 0 :(得分:4)
Convert.ToSingle(value, culture)
来电((IConvertible)value).ToSingle(culture)
。 decimal
的{{1}}然后忽略传入的文化并返回IConvertible.ToSingle
,它只返回Convert.ToSingle(value)
。
是的,您的代码是等效的。
答案 1 :(得分:0)
是的,只有在numericupdown1值很小的情况下,您的代码才相同。 但如果该值为41.00027357629127或类似值,则返回4.10002732E + 15.
所以,通过使用float.Parse(“numericUpDown1.Value”,CultureInfo.InvariantCulture.NumberFormat);你可以得到确切的值