我想请问float和double在巨大数字计算方面有没有影响返回值的问题?
比如:在计算面积的时候,坐标点是用float表示的.坐标经过了两次转换,屏幕坐标->经纬度->世界坐标
这中间过程都是float.而最后结果是double接受返回值.我想请问是不是在转换过程有精度问题影响后来的结果.我说的巨大数字是上百万,后面算面积的时候坐标点的差相差只有几百.结果总是不准确.是不是精度问题影响的?

解决方案 »

  1.   

    浮点数本身就精度低
    我记得
    float有效数字好像是7位
    double是15位
      

  2.   

    会有影响,取决于你需要的精度,它们是近视值类型。
    如:3.1415926 表示为float,则只能精确到:3.14159212345678.92->1234567?.??
      

  3.   

    to kssys():你的意思就是说 12345678.92(float)->1234567?.??(double)的转换过程中12345678.92就当作1234567?.??了?那-2173820和-2174206和-2175067和-2174674他们的区别大吗?
      

  4.   

    float最多只能有7位数字,如果超过7位,后面的就会被舍弃。-2173820和-2174206和-2175067和-2174674这几个数字都能完整的保留下来。
      

  5.   

    楼主这个问题我有接触过,做过类似的程序。
     返回为FLOAT-》DOUBLE时候无损失,不过我建议你在中间用高精度long double 来定义 运算,因为运算会损失精度。
     然后可以用稍微低点的精度来返回,这样的数字 既符合要求 也不会太有损精度。