返回float变量会失去C中的精度

时间:2012-11-26 23:40:59

标签: c function floating-point return

嗨,是的,我在使用以下代码时遇到了一些麻烦。上面的函数执行并输出132.87到float变量但是当我将它返回到主程序时,输出则缩短为132.00

这显然是一件我很想念的事情,任何人都可以帮我解决这个问题吗? 非常感激。

calcSigmaXY(max) {
 int count= 0;
 float runTotal = 0, product[max];
 for (count = 1; count <= max; count++) {
     product[count] = pointData[count][1] * pointData[count][2];
     runTotal = runTotal + product[count];
 }
 printf("\nruntotal is %4.2f",runTotal); // outputs 132.87
 return(runTotal);
} 

int maxPoints = 6;
float sigmaXY = 0,
sigmaXY = calcSigmaXY(maxPoints);
printf("\nsigmaxy set to : %4.2f\n", sigmaXY); // outputs 132.00

2 个答案:

答案 0 :(得分:10)

在某些C版本中,返回值&amp;类型默认为int,因此通过声明您的函数

calcSigmaXY(max) 

你基本上是在说

int calcSigmaXY(max) 

错误的精确度 - 您返回的float将转换为int。将您的函数声明为

float calcSigmaXY(max) {
      //...
}

答案 1 :(得分:2)

您必须声明calcSigmaXY的返回值,否则返回值隐式为int

如果您将函数声明为float calcSigmaXY,它应该按预期工作。

还要考虑在编译器/ IDE中启用和读取警告。