c - 应该打印 n 的值的程序!(n 由用户输入)在 C 中使用长双精度时表现得很奇怪
问题描述
我目前正在测试 n 的最大值!其中 n 是用户输入的正整数。我对此进行了测试:
- 短的
- 整数
- 长
- 长长的
- 漂浮
- 双倍的
对于上述所有类型,程序会打印正确的值。但是,当我将阶乘声明为 long double 类型时,程序的行为很奇怪。例如,我输入 10!,程序输出 -21340077980675728,在 8 之后有 ~50 个零,这显然是不正确的。那么我的错误在哪里?
#include <stdio.h>
int main(void)
{
int n, i;
long double factorial = 1.0;
printf("Enter a positive integer: ");
scanf(" %d", &n);
for (i = n; i >= 1; i--){
factorial *= i;
}
printf("Factorial of %d: %.0Lf\n", n, factorial);
return 0;
}
解决方案
推荐阅读
- r - 具有参与者 ID 和提示的列:在 R 中将它们分成两个不同的列
- javascript - 原型交互式空间地图的问题
- python - 使用 Dataframe 值在 Python 中转换列表中的元素?
- python - mypy:无类型装饰器使函数“my_method”无类型
- python - 将输入从函数发送到变量?
- android - Android Hilt ViewModel注入上下文依赖类
- linux-kernel - 如果内核配方没有将 PROVIDES 变量设置为虚拟/内核,“bitbake 虚拟/内核”如何工作?
- arrays - 如何使用聚合合并/合并 MongoDB 中的数组数组?
- batch-file - 仅当内容保存在子目录而不是根文件夹中时才使用批处理移动内容
- javascript - Reactjs/Next.js 避免函数重复