在C语言中,返回浮点变量将失去其精度

在C语言中,返回浮点变量将失去其精度,c,function,floating-point,return,C,Function,Floating Point,Return,您好,是的,我在以下代码中遇到一些问题。上面的函数执行并向浮点变量输出132.87,但当我将其返回主程序时,输出将缩短为132.00 这显然是我缺少的一些简单的东西。有人能帮我做这个吗? 非常感谢 calcSigmaXY(max) { int count= 0; float runTotal = 0, product[max]; for (count = 1; count <= max; count++) { product[count] = pointData[count

您好,是的,我在以下代码中遇到一些问题。上面的函数执行并向浮点变量输出132.87,但当我将其返回主程序时,输出将缩短为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
calcSigmaXY(最大值){
整数计数=0;
float runTotal=0,乘积[max];

对于(count=1;count,在某些C版本中,返回值和类型默认为
int
,因此

calcSigmaXY(max) 
你基本上是说

int calcSigmaXY(max) 
因此,精度损失-返回的
浮点值将转换为
int
。将函数声明为

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

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

如果您将函数声明为
float-calcSigmaXY
,它应该可以正常工作


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

我没有看到代码“> CalcIGigMyXy(max)的签名。
,这是有效的标准C代码吗?函数的返回类型可能是
int
,所以您的返回值会被转换。谢谢您,杰克,我犯了一个小错误。@MatthewWalton我建议您在编译器中打开警告,并将警告设置为错误,这样您就不能忽略它们。若您使用的是GCC或Clang,您应该这样做能够通过标志
-Wall-Wextra-Werror
来打开最有用的警告,并在收到警告时导致编译失败。我不知道MSVC的等价物是什么,但我肯定有一个。这将帮助您避免许多可能的noob错误。