鱼C论坛

 找回密码
 立即注册
查看: 1913|回复: 1

c++ 高精度乘单精度

[复制链接]
发表于 2021-5-15 23:30:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c++高精度乘单精度
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string st;
  4. int x,i,len,m;
  5. int a[100];
  6. int main(){
  7.         cin>>st>>x;
  8.         len=st.size();
  9.         for(i=0;i<len;i++){
  10.                 a[i]=st[i]-'0';
  11.         }
  12.         for( i=0;i<len;i++){
  13.                 a[i]*=x;
  14.         }
  15.         for( i=0;i<len;i++){
  16.                 a[i+1] += a[i]/10;
  17.                 a[i]%=10;
  18.         }
  19.         while(a[len]){
  20.                 a[len+1] += a[len]/10;
  21.                 a[len]%=10;
  22.                 len++;
  23.         }
  24.         m=a[len+1];
  25.         while(m){
  26.                 a[len++]=m%10;
  27.                 m=m/10;
  28.         }
  29. //        for(i=0;i<len;i++){
  30. //                cout<<a[i];
  31. //        }
  32.         for(i=len-1;i>=0;i--){
  33.                 cout<<a[i];
  34.         }
  35.        
  36.     return 0;
  37. }
复制代码

当输入20和3时,
输出了06.
求解决办法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-16 21:37:42 | 显示全部楼层
看了半天没看懂你想干什么...
你的程序到底要实现什么功能呢?
就你代码我说一下吧
  1.         cin >> st >> x;
  2.         len = st.size();
  3.         for(i = 0; i < len; i++)
  4.         {
  5.                 a[i] = st[i] - '0';
  6.         }
  7.         for( i = 0; i < len; i++)
  8.         {
  9.                 a[i] *= x;
  10.         }
  11.         for( i = 0; i < len; i++)
  12.         {        //这里开始我就没看懂了   难道你是想进位?  但是进位应该是低位进高位,没听说是高位进低位的啊
  13.                 a[i + 1] += a[i] / 10;
  14.                 a[i] %= 10;
  15.         }
  16.         while(a[len])//这里就更奇怪了,你有值的下标只到 len - 1,难道是因为进位?进位就不会是往低位
  17.         {
  18.                 a[len + 1] += a[len] / 10;
  19.                 a[len] %= 10;
  20.                 len++;
  21.         }
  22.         //这我就又没看懂了,上面进位已经执行完了,为什么还要往后
  23.         //这是得亏你上面进位没完成要是我输入100位数,你这直接就崩溃了都
  24.         m = a[len + 1];
  25.         while(m)
  26.         {
  27.                 a[len++] = m % 10;
  28.                 m = m / 10;
  29.         }
  30. //        for(i=0;i<len;i++){
  31. //                cout<<a[i];
  32. //        }
  33.         //你这又从后向前打印,那可不就是输出06么
  34.         for(i = len - 1; i >= 0; i--)
  35.         {
  36.                 cout << a[i];
  37.         }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 20:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表