如何用c++编写1乘到10000,1*2*3*...*10000

2024-11-23 08:37:01
推荐回答(4个)
回答1:

你这个用double都会越界

因为double数据的最大值才是1.7976931348623158e+308

你这个乘起来都得10的万次方以上了

你想要算的话,就用一个变量保存次方数,然后结果每大于10就给它降到十以下

最后的结果用字符串来存储吧

int cnt = 0;//10的次方数
double res = 1;
for(int i = 1;i <= 10000;i++)
{
    res * = i;
    while(res > 10)
    {
        res /= 10;
        cnt++;
    }
}
//最后得到res,以及它的位数
char buf[100] = {0};
sprintf(buf, "%lfe+%d", res, cnt);

buf就是结果了

回答2:

如果不要求精度;那么可以用double类型;如果追求精度;那么要大数乘法;
大数乘法就是把每个数存放到一个动态数组中;然后逐个相乘;根据长度扩展这个数组;这个操作比较繁琐

回答3:

用BigInteger

回答4:

不要定义成int呀,定义成double什么的,扩大数据类型