代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
java写的大数字加法运算
作者:
0晓风残月0
/ 发布于
2011/10/26
/
839
<div>package com.kaishengit.bai;</div> <div>public class Add { public Add(){ } /** * 计算 * @param x 运算字符串 * @param y 运算字符串 * @param t 是否开启小数运算 true不开启 false 开启 * @return */ private String load(String x,String y,boolean t){ int[] num1 = split(x); int[] num2 = split(y); if(num1.length < num2.length){ int[] num = num1; num1 = num2; num2 = num; } if(num1.length != num2.length){ int[] num = num2; num2 = new int[num1.length]; for (int i = 0; i < num1.length; i++) { if(t){ if(num.length > i){ num2[num2.length -1 -i] = num[num.length-1-i]; }else{ num2[num2.length -1 -i] = 0; } }else{ if(num.length > i){ num2[i] = num[i]; }else{ num2[i] = 0; } } } } int sum = 0; int coll = 0; int scale = 0; int step = 0; String result =""; for(int i = 0;i < num1.length;i++){ sum = num1[num1.length-1-i] + num2[num2.length-1-i]; sum += step; if(sum >= 10){ coll = sum%10; scale = sum/10; }else{ coll = sum; scale = 0; } step = scale; result +=String.valueOf(coll); } if(t && step > 0){ result += step; } return (new StringBuffer(result).reverse().toString())+":"+step; } /** * 加法运算 */ public String add(String x,String y){ String s = swich(x,y); String[] st = s.split(":"); if(st[2].equals("1")){ return load(st[0],st[1],true); }else if(st[2].equals("2")){ return load(point(st[0],0),st[1],true).split(":")[0] +"."+ point(st[0],1); }else if(st[2].equals("3")){ String[] point = load(point(st[0],1),point(st[1],1),false).split(":"); String zs = load(point(st[0],0),point(st[1],0),true); if(Integer.parseInt(point[1]) > 0){ zs = load(zs.split(":")[0],point[1],true); } return zs.split(":")[0]+"."+point[0]; } return null; } /** * 交换字符串按小数点和长度 * @param x 字符串x * @param y 字符串y * @param m 标记当m的值为(0,1,2,3,) 1.全部没有小数点2.其中有一个小数点3.全部都带小数点 * 0.其他情况 * @return */ private String swich(String x,String y){ int m = 0; if(x.indexOf(".") !=-1 && y.indexOf(".") != -1){ if(x.length() < y.length()){ String t = x; x = y; y = t; } m = 3; }else if(x.indexOf(".") != -1 || y.indexOf(".") != -1){ if(y.indexOf(".") != -1){ String t = x; x = y; y = t; } m = 2; }else { if(x.length() < y.length()){ String t = x; x = y; y = t; } m = 1; } return x+":"+y+":"+m; } /** * 小数点 字符串选择部分 * @param x 字符串 * @param m 当m的值为0时返回小数点前一部分为1时返回小数点后一部分 * @return */ private String point(String x,int m){ int r = x.indexOf("."); if(r == -1){ return x; }else{ if(m == 0){ return x.substring(0, x.indexOf(".")); }else if(m == 1){ return x.substring(x.indexOf(".")+1); } } return null; } /** * 拆分字符串将其转换为数组表示形式 * @param x 运算字符串 * @return int数组 */ private int[] split(String x){ int[] num = new int[x.length()]; for(int i = 0;i <x.length();i++){ if(x.substring(i, i+1).equals(".")){ num[i] = 10; }else{ num[i] = Integer.parseInt(x.substring(i, i+1)); } } return num; } } </div>
试试其它关键字
加法运算
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
0晓风残月0
贡献的其它代码
(
1
)
.
java写的大数字加法运算
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3