我需要确定一组输入的标准偏差。这需要(每个输入 - 均值)^ 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微控制器上运行此代码。
或者使用C++流,因为它会避免这样的错误,并做正确的事,因为编译器会选择如何打印类型。 –
%d - >%f,%d是整数。 – Ylisar
不相关,但你可能会感兴趣:你计算标准偏差的方式有准确性问题,结帐这个http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance – Monkey