为什么这个阶乘函数返回int而不是double
Why does this factorial function return an int instead of a double
在返回之前,类型是一个双精度,此时它将被剪裁为一个整数。为什么会这样?如有任何帮助,我们将不胜感激。
using namespace std;
double fac_counter = 1.0;
int factorial(double n) {
for (double i = 1.0; i <= n; i++)
{
fac_counter = double(fac_counter)*i;
}
return fac_counter;
}
您的返回类型是int将其更改为double
int factorial(double n)
将其更改为
double factorial(double n)
得到int的原因是函数的返回类型是int,而您想要的是double。
我还注意到你的代码有一个奇怪的行为。如果我使用
cout<<factorial(3);
我似乎得到了输出6
但是当我使用时
printf("%lf",factorial(3));
我得到6.000000
。
相关文章:
- C++在数学计算中将double转换为int
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 进程为包含double但不包含int的模板返回了-103741819(0xC0000005)
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 错误:"int pow(double,int)"与上一个声明int pov(double a,int
- 重载函数 int vs double
- 如何修复 E2015 "ambiguity between pow(double,double) and pow(float,int)"
- 用于检查"is int"/"is double"/等的模板函数
- 使用 double 在 C++ 中初始化 int 之间的差异
- 如何为包含map<int,*double>成员的类编写析构函数?
- 如何使用 JNI 将 double 和无符号 int 从本机 c 库返回到 java
- 对类似"struct {double, int}"对象使用reinterpret_cast进行对象访问
- 函数将double/int转换为字符串
- c++中从double/int/string到bool的自动转换
- 共享库从 void * "invalid conversion" 到 double(*) (int*) 时出错?
- 无效的数组下标类型' double[int] '
- 错误cv::SURF::SURF(double,int,int,bool,bool)在OpenCV和c++中实现SURF
- 我面临这个:我的程序中数组下标的无效类型"double[int]"
- 算术问题(double = int / int)
- 为什么从c++ 11中删除了std::pow(double, int) ?