c - pow(x,y) 适用于浮点数,但不适用于整数
问题描述
我写了一个程序来计算前五个数字的立方:
#include <stdio.h>
#include <math.h>
int main() {
for(int i = 1; i <= 5; i++) {
printf("%d ",pow(i,3));
}
}
这不起作用。它打印:
0 0 0 0 0
但是,使用 float 它可以工作:
#include <stdio.h>
#include <math.h>
int main() {
printf("%f\n",pow(3,3));
for(float i = 1; i <= 5; i++) {
printf("%f ",pow(i,3));
}
}
并打印:
1.000000 8.000000 27.000000 64.000000 125.000000
整数有什么问题?为什么这只适用于浮点数?
解决方案
首先 pow(i,j) 返回双精度值,而不是整数。试试这个代码
int main() {
for(int i = 1; i <= 5; i++) {
printf("%f ",pow(i,3));
}
return 0;
}
推荐阅读
- networking - 从其他应用程序线程写入 Netty 通道
- react-native - 了解 iOS 模拟器上 React Native Inspector 中的元素维度
- firebase - DllNotFound:FirebaseCppApp-6_14_0 仅适用于 Android?
- python - 要更新的数据列表
- amazon-web-services - 使用 PostMan 上传多部分 Amazon S3 Rest API 时出现问题
- python - 如何在运行时使用带有“?”等占位符的绑定变量更新 SQL Server 中的表 在 python 中使用 pyodbc 模块?
- r - 重新运行相同的代码,但在每个循环中更改列名称
- c# - 如何使用 ICSharpCode.SharpZipLib 压缩文件数据并使用 HttpClient 上传?
- html - 如果主机有,则添加 CSS(单击)
- javascript - ES6 箭头函数和 Promise Chaining 精简语法解释