| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 705 人关注过本帖
标题:如何不用科学计数法显示阶乘?
只看楼主 加入收藏
哈库拉玛塔塔
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-6-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
如何不用科学计数法显示阶乘?
计算100的阶乘,我不想让结果显示成科学计数的   怎么做?想要看到完整的整数
#include <iostream>
using namespace std;
long double a=1;
long double b=2;
int c=1;
int main()
{
 while (b<=100)
 {
  cout<<c<<'\t';
  a*=b;
  cout<<a<<endl;
  b++;
  c++;
 }
 cin.get();
 return 0;
}

[ 本帖最后由 哈库拉玛塔塔 于 2014-6-28 11:57 编辑 ]
搜索更多相关主题的帖子: include double 如何 
2014-06-28 11:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
long double 不足以支持显示100的阶乘

DO IT YOURSELF !
2014-06-28 12:31
哈库拉玛塔塔
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-6-28
收藏
得分:0 
回复 2 楼 wp231957
那我要怎么做呢?
2014-06-28 12:52
邵帅
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:20
帖 子:174
专家分:505
注 册:2012-8-27
收藏
得分:7 
回复 3 楼 哈库拉玛塔塔
有种想法不知道能否实现:

自己设计一个类用来表示大数据的存储,并实现*,=等运算符重载

Figure out what you like. Try to become the best in the world of it.
2014-06-28 15:33
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:7 
要么自己实现大数运算 要么用大数库 举个栗子

程序代码:
#include <iostream>
#include <gmp.h>
#include <gmpxx.h>

using std::cout;
using std::cin;
using std::endl;

int main(void)
{
    unsigned long n = 1;
    cin >> n;
    mpz_class result(1);
    mpz_fac_ui(result.get_mpz_t(), n);
    cout << result << endl;
   
    return 0;
}


编译参数
g++ -Wall -march=corei7-avx -Ofast -msse4.2 -mavx -std=c++11 a.cpp -lgmp -lgmpxx -lm -o a

运行
100
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

2014-06-28 15:33
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2014-6-28 15:33:39的发言:

要么自己实现大数运算 要么用大数库 举个栗子

 
#include  
#include  
#include  
 
using std::cout;
using std::cin;
using std::endl;
 
int main(void)
{
    unsigned long n = 1;
    cin >> n;
    mpz_class result(1);
    mpz_fac_ui(result.get_mpz_t(), n);
    cout << result << endl;
   
    return 0;
}


编译参数
g++ -Wall -march=corei7-avx -Ofast -msse4.2 -mavx -std=c++11 a.cpp -lgmp -lgmpxx -lm -o a

运行
100
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

这是用GNU MP这个大数库的例子

库的网址
https://
2014-06-28 15:34
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
回复 2 楼 wp231957
为什么不行? 100! = -1.71024e+123

hl928452957@gmail点com

2014-07-02 22:53
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
回复 3 楼 哈库拉玛塔塔
或者有一种比较麻烦的用字符串数组表示.
乘与被乘数存入字符串数组.. 然后 让它们一个个相乘. 结果存入另一个数组.
然后以字符方式显示出来.

hl928452957@gmail点com

2014-07-02 22:58
快速回复:如何不用科学计数法显示阶乘?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017848 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved