4

こんにちは、次のコードで問題が発生しています。上記の関数が実行され、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
4

2 に答える 2

10

一部の C バージョンでは、戻り値と型のデフォルトはintであるため、次のように関数を宣言することによって

calcSigmaXY(max) 

あなたは基本的に言っています

int calcSigmaXY(max) 

精度が失わfloatれるため、返される値は に変換されますint。関数を次のように宣言します

float calcSigmaXY(max) {
      //...
}
于 2012-11-26T23:43:06.053 に答える
2

の戻り値を宣言する必要があります。calcSigmaXYそうしないと、戻り値はint暗黙的に宣言されます。

関数を宣言するとfloat calcSigmaXY、意図したとおりに機能するはずです。

また、コンパイラ/IDE で警告を有効にして読み取ることも検討してください。

于 2012-11-26T23:44:06.427 に答える