在C语言中,返回浮点变量将失去其精度
您好,是的,我在以下代码中遇到一些问题。上面的函数执行并向浮点变量输出132.87,但当我将其返回主程序时,输出将缩短为132.00 这显然是我缺少的一些简单的东西。有人能帮我做这个吗? 非常感谢在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
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错误。