高精度的存储和输出

为何使用高精度  

  我们知道,在C++里,就算是最大的unsigned long long也只能存储0~18446744073709551615的数,那么如果题目要你存储一个1000位的数,那该怎么办呢?

  所以这时候,我们就要用到高精度了。

高精度的存储

  上文提到,题目可能会让你存储一个 1000 位的数。位数这么多,该有什么数据类型存储呢?可以用字符数组char a[1005],不过最好的选择是字符串。因为除非你的内存耗尽,字符串的长度几乎是可以无限长的。不像数组,int类型的数组int a[],长度最多只能开到100000000。所以,本文所有高精度的代码都是string做法,特此声明。

  言归正传,我们可以把输入高精度的过程写在一个void类型的函数read()里,注意:要逆序存储!!!

  当我们输入一个数时(string类型),我们先要记下它的长度,也就是这个数的位数(原因我们会在高精度的输出时讲解),将长度存储到数组a[0]。接着我们会将这个数的每个数位逆序存储(如图)。

   代码

void read(int a[]){
    string s;  //使用string时最好加
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值