我需要确定一组输入的标准差。这需要(每个输入-平均值)^2的总和。我有以下代码来执行此操作(510是用于测试的示例输入):

int testDiff = 510;
console.printf("testDiff = %i \r\n",testDiff);

double testDiff_double = static_cast<double>(testDiff);
console.printf("testDiff_double = %d \r\n",testDiff_double);

double result = pow(static_cast<double>(testDiff),2);
console.printf("result = %d \r\n",result);

但是,此代码不会生成预期的输出(260100)。如果我打印在每个阶段获得的值,我将得到以下结果:
testDiff = 510
testDiff_double = 0
pow = 0

为什么从整数到双精度的转换会失败?我正在使用一个static_cast,因此如果转换有逻辑问题,我希望在编译时出现错误。
注意(虽然这不重要):我在一个MBED微控制器上运行这个代码。

最佳答案

因为您使用的是%d而不是%f来显示浮点值。

09-25 20:43