尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

算法讲解12:高精度加减法

算法讲解12:高精度加减法
📅 发布时间:2026/6/21 14:43:23

前言:众所周知,我们在处理一个整数时,一般用int[-2^31,2^31-1],或者long[-2^63,2^63-1],但即使这样也有更大的数,所以我们要将整数转化为字符的形式,那么这里补充字符的比较原则:

abc<acb //同位数,从前往后比,a=a,c>b,到此为止就能出答案

ab<abc //不同位数,两者前缀都是ab,那么abc多个c,右边大

ac>abc //前缀不同,a=a,c>b,左边大

原理:

将123456存入数组s,s[0]=6,s[1]=5,以此类推,为什么要倒着推:方便对其位数

比如1234和12,正着推,s[0]=1,s[1]=2,s[2]=3,s[3]=4,a[0]=1,a[1]=2,如此对照下会出现千位对十位,百位对个位的情况

[1,2,3,4,5,6]

[7,8,9]

对位相加,(下面的数组位数不够,要高位补零)->[8,0,3,5,5,6]

条件:位数非常大或者需求精度非常高

注意:输入字符串,存储数组,在运算减法时会出现负数,需要额外逻辑

代码演示:加法+减法

package 博客; import java.util.Scanner; public class 高精度加法 { static int a[] =new int [100005]; static int b[]=new int [100005]; static Scanner sc=new Scanner(System.in); public static int ab(int c[]) { String aabb=sc.nextLine(); for(int i=0;i<aabb.length();i++) { c[i] = aabb.charAt(aabb.length() - 1-i)-'0';//倒着处理,-'0'就不会输出ASCLL码 } return aabb.length(); } public static void main(String[] args) { int la=ab(a);//排序完成 int lb=ab(b); sc.close(); int c[]=new int [100006]; int d[]=new int [100006]; //比ab两数组多一位进位空间 for(int i=0;i<Math.max(la,lb);i++) { c[i]+=a[i]+b[i]; if(c[i]>=10) { c[i]-=10; c[i+1]++; } } //下一步取出所有前置的0 for(int i=c.length-1;i>0;i--) { if(c[i]!=0) { for(int j=i;j>=0;j--) { System.out.print(c[j]+" "); } break; } } for(int i=0;i<Math.max(la,lb);i++) { d[i]+=a[i]; d[i]-=b[i]; if(d[i]<0) { d[i]+=10; d[i+1]--; } } int shifo1=0;//如果出了负数就倒着来 for(int p=d.length-1;p>0;p--) { if(d[p]<0) { shifo1=1; int e[]=new int [100006]; for(int i=0;i<Math.max(la,lb);i++) { e[i]-=a[i]; e[i]+=b[i]; if(d[i]<0) { e[i]+=10; e[i+1]--; } } System.out.print("- "); for(int i=e.length-1;i>0;i--) { if(e[i]!=0) { for(int j=i;j>=0;j--) { System.out.print(e[j]+" "); } break; } } } } //考虑到为0无法输出0,设置shifo2 int shifo2=0; if(shifo1==0) { for (int i = d.length - 1; i > 0; i--) { if (d[i] != 0) { for (int j = i; j >= 0; j--) { System.out.print(d[j] + " "); shifo2 = 1; } break; } } if (shifo2 == 0) { System.out.println("0"); } } } }

相关新闻

  • LangFlow条件分支设置:让AI流程更智能
  • 零基础入门树莓派烧录与SD卡分区关联
  • 赛博炒股时代来了,股票成为“千问第一问”

最新新闻

  • Claude Code 接入 DeepSeek V4 的中转层协议转换实战
  • 2026年6月最新浪琴中国官方售后客服服务地址热线网点电话 - 浪琴服务中心
  • 2026年上城区奢侈品包包洗护修复保养,深耕奢护精工 15 载!杭州奢护你贸易扎根雷小安潮奢大厦,以无痕修复传承匠人手艺,打造养护、二创、回收、学徒培训综合产业平台 - GrowthUME
  • 全职太太离婚可以要求补偿吗:3种法定补偿情形与主张要点 - 品牌2026
  • 西安搬家价格全解析:收费标准、一口价与避坑指南,彻底告别隐形收费 - 资讯速览
  • HITAG µ RFID芯片命令解析与CRC-16校验实战指南

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号