是C#十进制文化依赖

时间:2017-04-13 05:34:37

标签: c# .net culture

我正在浏览另一位开发人员的一些代码,我发现一些代码似乎......非常丑陋且不必要。

据我所知,在解析字符串时,我们需要正确使用文化信息,否则你可以进入" 1.2" vs" 1,2"类型问题。在这种情况下,开发人员使用的是NumericUpDown,它存储为小数。

float fValue = System.Convert.ToSingle(numericUpDown1.Value, System.Globalization.CultureInfo.InvariantCulture)

我的问题是: - 以下代码是等效的吗? - 文化信息会得到妥善处理吗? - 这个演员会抛出异常吗?

float fValue = (float)numericUpDown1.Value;

如果它们不相等(或安全),请您解释原因并提出正确的"溶液

提前致谢!

2 个答案:

答案 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);你可以得到确切的值