- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
int main()
{
char arr[3]={'1','5','3'};
int sum=0;
for (int i=0;i<3;i++)
{
sum+=pow((arr[i]-48),3);
printf("%d to the power 3 is: %f\n",arr[i]-48,pow((arr[i]-48),3));
}
printf("sum is %d\n",sum);
}
预期输出:
1 to the power 3 is: 1.000000
5 to the power 3 is: 125.000000
3 to the power 3 is: 27.000000
sum is 153
实际输出:
1 to the power 3 is: 1.000000
5 to the power 3 is: 125.000000
3 to the power 3 is: 27.000000
sum is 152
Here is an image of the Output
输出不应该是 153 和 NOT 152 吗?
编辑:如果代替 sum+=pow((arr[i]-48),3);我用
sum+=(int)(floor(pow((arr[i]-48),3)));
输出正确地为 153。所以我不认为 pow 返回较小的整数,或者将 float 类型转换为返回较小值的整数是这里的情况
最佳答案
Microsoft pow
例程是出了名的糟糕。正如 macOS pow
所示,可以为这些操作数和类似的操作数返回正确的结果,但 Microsoft 要么没有投入工程工作来执行此操作,要么选择不更改其 pow实现。即使对于具有可用浮点表示的数学结果的小整数操作数,
pow
也可能返回比正确值稍大或稍小的结果。当返回的结果小于精确整数结果时,将其转换为整数会导致截断为下一个较小的整数。
计算
具有正确的舍入,据我所知,没有商业或常用的实现这样做。pow
很困难,而且并非所有实现都能做得很好。对于浮点函数,理论上可能的最佳质量是正确舍入。正确舍入例程返回以浮点格式表示的数字,该数字最接近精确的数学结果,并按照所选舍入规则的方向舍入。 (最常用的舍入规则是四舍五入到最接近的值,并向偶数低位舍入。其他规则包括向 + 无穷大、向 − 无穷大和向零舍入。)计算 pow 非常困难
尽管如此,还是可以设计pow
,以便只要精确结果能够以浮点格式表示,它就返回精确结果。我记得,当前的 macOS pow 实现就是这样做的。因此,问题中的程序在使用 macOS 工具编译和执行时将产生预期的结果。 Microsoft 的 pow
没有此属性,因此计算 pow(x, 3)
可能会返回略小于 x3,即使 x3 可以表示。
即使使用高质量的 pow
实现,出于速度考虑,通常也不希望使用具有小整数幂的 pow
。计算 pow(x, 3)
比计算 x*x*x
慢。
关于c - 奇异的输出。输出不应该是 153 而不是 152,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50794890/
我有一个尺寸为行 x 列 x 深度的 3D 图像。对于图像中的每个体素,我计算了一个 3x3 实对称矩阵。它们存储在数组 D 中,因此具有形状 (rows, cols, deps, 6)。 D 为图像
我正在研究一个单链表。在创建自己的链表时,我对打印自定义链表中的节点集合感到困惑。 我想知道,单向链表是否像堆栈一样以后进先出的方式显示其集合? 下面是我自己的 LinkedList 并且节点是一个类
我正在研究一个单链表。在创建自己的链表时,我对打印自定义链表中的节点集合感到困惑。 我想知道,单向链表是否像堆栈一样以后进先出的方式显示其集合? 下面是我自己的 LinkedList 并且节点是一个类
我是一名优秀的程序员,十分优秀!