C#字符串转float时数值改变

string a = "497074.73";
float b = Convert.ToSingle(a);
b=497074.719
为什么数值改变了?

浮点数有一个精度的问题,但也不应该变化如此大,如果是 b=497074.729 还能理解,但是 b=497074.719 就不能理解了。
是不是输入错误 了???

http://wenku.baidu.com/link?url=XdOkL9awOBi5SHPhFuSm08Gj3PnzTXcyR8ExBWGJlv6puYXqcxkdW-_L5PchxXTitbvddht8aIZsHM_sXjT2Qnl7ZcM_7ZaQKQ-7HtZV3-C

    string a = "47174.73";
    float b = Convert.ToSingle(a); //47174.73

        string a = "471074.73";
float b = Convert.ToSingle(a); //471074.7


    string a = "47111074.73";
float b = Convert.ToSingle(a); //4.711108E+07

这和float的精度为6~7位有效数字有关:

图片说明

这和float的精度为6~7位有效数字有关: 结果0.19 精确到16 位后,用二进制表示为0.0011000010100011

这和float的精度为6~7位有效数字有关: 结果0.19 精确到16 位后,用二进制表示为0.0011000010100011