精华内容
下载资源
问答
  • Java中如何比较两个数的大小

    万次阅读 2016-11-25 23:03:55
    Java中,经常会进行两个数之间的比较,当被比较两个数均为整数时,按如下代码进行比较即可:int a=2; int b=5; System.out.println(a==b);当两个数为浮点数时,若直接进行比较,可能会产生错误,如下所示:...

    在Java中,经常会进行两个数之间的比较,当被比较的两个数均为整数时,按如下代码进行比较即可:

    int a=2;
    int b=5;
    System.out.println(a==b);

    运行的结果为false。
    当两个数为浮点数时,若直接进行比较,可能会产生错误,如下所示:

    double a=1.0;
    double b=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
    System.out.println(a==b);

    运行后,会发现输出的结果为false。这是因为Java在进行浮点数的运算时,并不是精确运算,因此会产生一定的误差,这个时候,应该如下进行比较:

    double a=1.0;
    double b=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
    System.out.println(Math.abs(a-b)<1e-6);

    其中,1e-6表示一个很小的数,可以换成其他的合适的数进行替换。这个时候,输出的结果就为true了。

    展开全文
  • JAVA 两个大字符串数字相加

    万次阅读 2017-06-16 23:18:17
    在平常的业务中也许会有很大的数字无法使用int或者long来存储了,那么只能存储成string类型,当需要两个这样的数字相加的时候,怎么办呢? 方法中不再验证传入的数字的正确性,默认是正确的。整体步骤: 将两个字符...

    JAVA 两个大字符串数字相加

    在平常的业务中也许会有很大的数字无法使用int或者long来存储了,那么只能存储成string类型,当需要两个这样的数字相加的时候,怎么办呢?

    方法中不再验证传入的数字的正确性,默认是正确的。

    整体步骤:

    1. 将两个字符串长度补全,补成一致长度,长度短的左边补0;
    2. 定义一个新的整形数组,长度为字符串的长度+1,因为结果的长度可能超出原字符串的长度(整形数组值默认为0);
    3. 倒叙循环相加,将结果%10的余位放在低位,结果的/10的结果放在高位;最终合并结果返回。
    public String bigNumberPlus(String a, String b) {
        int lenA = a.length();
        int lenB = b.length();
        if(lenA > lenB) {
            b = StringUtils.leftPad(b, lenA, "0");
        } else {
            a = StringUtils.leftPad(a, lenB, "0");
        }
    
        int[] arrC = new int[a.length() + 1];
    
        for(int i = a.length()-1; i>=0; i--) {
            int ai = Integer.parseInt(a.charAt(i) + "" );
            int bi = Integer.parseInt(b.charAt(i) + "" );
            int ci = arrC[i+1];
            int t = ai + bi + ci;
            arrC[i+1] = t%10;
            arrC[i] = t/10;
        }
    
        StringBuffer res = new StringBuffer();
        for(int i = 0; i<arrC.length; i++) {
            if(i==0 && arrC[i]==0) continue;
            res.append(arrC[i]);
        }
        return res.toString();
    }

    方法整体只循环一次,效率还可以,大家还有什么好方法,可以留言讨论!

    如果是小数的话,有两种思路:

    1. 补全长度的时候,需要两边都补全,小数点左边的在左边补全0,小数点右边在右边补全0,然后标记小数点所在的位置,剔除小数点,计算完成后,再在固定位置加入小数点即可。
    2. 分开计算:先计算小数点右边的小数部分,计算时需要右边补全;然后计算小数点左边部分,计算时需要左边补全,当右边计算结果大于1的时候,需要左边按照3个字符串计算。
    展开全文
  • 有一字符串的时间,比如"2012-12-31 16:18:36" 与另一时间做比较,如果前者比后者早,则返回true,否则返回false。 为此,我设计了一方法。 import java.util.*; import java.text.ParseException; ...

    有一个字符串的时间,比如"2012-12-31 16:18:36" 与另一个时间做比较,如果前者比后者早,则返回true,否则返回false。

    为此,我设计了一个方法。

     

    import java.util.*;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    class Test
    {
    	public boolean compare(String time1,String time2) throws ParseException
    	{
    		//如果想比较日期则写成"yyyy-MM-dd"就可以了
    		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    		//将字符串形式的时间转化为Date类型的时间
    		Date a=sdf.parse(time1);
    		Date b=sdf.parse(time2);
    		//Date类的一个方法,如果a早于b返回true,否则返回false
    		if(a.before(b))
    			return true;
    		else
    			return false;
    		/*
    		 * 如果你不喜欢用上面这个太流氓的方法,也可以根据将Date转换成毫秒
    		if(a.getTime()-b.getTime()<0)
    			return true;
    		else
    			return false;
    		*/
    	}
    	public static void main(String[] args) throws Exception
    	{
    		boolean result=new Test().compare("2012-11-30 16:11:16", "2012-11-30 16:18:18");
    		System.out.println(result);
    	}
    }
    

    结果输出true

    很简单实用,希望大家喜欢~

     

    转载于:https://www.cnblogs.com/james1207/p/3295156.html

    展开全文
  • 两个非常的数字相加,相减(JAVA)

    千次阅读 2017-04-21 11:35:25
    两个非常的数字相加,相减

    注意点:  

    大数相加的时候没有判断数字的正负,

    如果都是正数,那么就可以按照正数相加来计算,

    如果是一正一负可以转换成大整数相减,
    两个负数可以先保存符号,然后相加。


    加法和减法的输入都不包括符号

    加法

    	public String bigNumberAdd(String f, String s) {
    		System.out.print("加法:" + f + "+" + s + "=");
    		// 翻转两个字符串,并转换成数组
    		char[] a = new StringBuffer(f).reverse().toString().toCharArray();
    		char[] b = new StringBuffer(s).reverse().toString().toCharArray();
    		int lenA = a.length;
    		int lenB = b.length;
    		// 计算两个长字符串中的较长字符串的长度
    		int len = lenA > lenB ? lenA : lenB;
    		int[] result = new int[len + 1];
    		for (int i = 0; i < len + 1; i++) {
    			// 如果当前的i超过了其中的一个,就用0代替,和另一个字符数组中的数字相加
    			int aint = i < lenA ? (a[i] - '0') : 0;
    			int bint = i < lenB ? (b[i] - '0') : 0;
    			result[i] = aint + bint;
    		}
    		// 处理结果集合,如果大于10的就向前一位进位,本身进行除10取余
    		for (int i = 0; i < result.length; i++) {
    			if (result[i] >= 10) {
    				result[i + 1] += result[i] / 10;
    				result[i] %= 10;
    			}
    		}
    		StringBuffer sb = new StringBuffer();
    		// 该字段用于标识是否有前置0,如果有就不要存储
    		boolean flag = true;
    		// 注意从后往前
    		for (int i = len; i >= 0; i--) {
    			if (result[i] == 0 && flag) {
    				continue;
    			} else {
    				flag = false;
    			}
    			sb.append(result[i]);
    		}
    		// 结果
    		System.out.println(sb.toString());
    		return sb.toString();
    	}

    减法

    	public static String bigNumberSub(String f, String s) {
    		System.out.print("减法:" + f + "-" + s + "=");
    		// 将字符串翻转并转换成字符数组
    		char[] a = new StringBuffer(f).reverse().toString().toCharArray();
    		char[] b = new StringBuffer(s).reverse().toString().toCharArray();
    		int lenA = a.length;
    		int lenB = b.length;
    		// 找到最大长度
    		int len = lenA > lenB ? lenA : lenB;
    		int[] result = new int[len];
    		// 表示结果的正负
    		char sign = '+';
    		// 判断最终结果的正负
    		if (lenA < lenB) {
    			sign = '-';
    		} else if (lenA == lenB) {
    			int i = lenA - 1;
    			// 找到第一个不相等的
    			// 注意下标0处理
    			while (i > 0 && a[i] == b[i]) {
    				i--;
    			}
    			if (a[i] < b[i]) {
    				sign = '-';
    			}
    		}
    		// 计算结果集,如果最终结果为正,那么就a-b否则的话就b-a
    		for (int i = 0; i < len; i++) {
    			int aint = i < lenA ? (a[i] - '0') : 0;
    			int bint = i < lenB ? (b[i] - '0') : 0;
    			if (sign == '+') {
    				result[i] = aint - bint;
    			} else {
    				result[i] = bint - aint;
    			}
    		}
    		// 如果结果集合中的某一位小于零,那么就向前一位借一,
    		// 然后将本位加上10。其实就相当于借位做减法
    		for (int i = 0; i < result.length - 1; i++) {
    			if (result[i] < 0) {
    				result[i + 1] -= 1;
    				result[i] += 10;
    			}
    		}
    
    		StringBuffer sb = new StringBuffer();
    		// 如果最终结果为负值,就将负号放在最前面,正号则不需要
    		if (sign == '-') {
    			sb.append('-');
    		}
    		// 判断是否有前置0
    		boolean flag = true;
    		for (int i = len - 1; i >= 0; i--) {
    			if (result[i] == 0 && flag) {
    				continue;
    			} else {
    				flag = false;
    			}
    			sb.append(result[i]);
    		}
    		// 结果为一位且是0,被上面的for处理了
    		// 如果最终结果集合中没有值,就说明是两值相等,最终返回0
    		if (sb.toString().equals("")) {
    			sb.append("0");
    		}
    		// 返回值
    		System.out.println(sb.toString());
    		return sb.toString();
    	}
    


    展开全文
  • JAVA-实现两个超大整数相加

    千次阅读 2018-12-21 20:10:12
    思路: 第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置。所以倒序存储,更加符合我们从左到右访问...第三步,遍历两个数组,从左到右按照对应下标把元素两两相加,就像小学...
  • java用字典顺序比较两个字符串

    千次阅读 2019-11-01 00:13:05
    java用字典顺序比较两个字符串关键词思想源码运行结果 关键词 compare (比较) str.compareTo(str2); 即比较strstr2这两个字符串。 思想 源码 运行结果
  • 背景:结合上篇的java位运算,突发奇想,特此总结,如何正确的求2个数的平均值,通过本片文章也让你们认识到bug是如何深埋在你的编程中的。 备注:以int计算为例。 1 通用写法 public static int avg(int x ,int...
  • Java学习路让我帮助很大的书籍

    万次阅读 多人点赞 2018-05-30 12:06:27
    在学习Java过程中,慕课网上的一些视频还有一些书籍对我帮助都很大。下面就我自己看过的一些书籍,来分享一些对我帮助比较大的书籍。 1《Head First Java.第二版》 可以说是我的Java启蒙书籍了,特别适合...
  • Java:求两个正整数的最大公约数最小公倍数

    万次阅读 多人点赞 2018-09-08 10:16:53
    两个正整数的最大公约数最小公倍数 题目描述:求两个正整数的最大公约数最小公倍数。 算法设计思路:  1. 辗转相除法求最大公约数:用较小除较大数,再用出现的余数(第一余数)去除除数,再用出现的...
  • Java实现 LeetCode 479 最大回文乘积

    万次阅读 多人点赞 2020-03-19 08:59:16
    你需要找到由两个 n 位数的乘积组成的最大回文。 由于结果会很大,你只需返回最大回文 mod 1337得到的结果。 示例: 输入: 2 输出: 987 解释: 99 x 91 = 9009, 9009 % 1337 = 987 说明: n 的取值范围为 [1,8]。 ...
  • Java程序员花一天时间写了飞机大战,舒服!

    万次阅读 多人点赞 2021-05-25 21:42:07
    天我发现CSDN上有篇飞机大战的文章异常火爆,各种指标都高(阅读、点赞、评论、收藏等),但都是python写的,竟然不是我大Java,说实话作为老java选手,我心里是有那么一些失落的,难道我大java打飞机不行?...
  • 题目:输入两个正整数mn,求其最大公约数最小公倍数。 这里要用到一个概念:辗转相除法。 各位就不要去百度了,这次大家当回伸手党吧,因为百度了你也不知道看哪里,我们直接打开百度百科,哈哈。你可能看到辗转...
  • 利用了Java8的新特性然后用collect(Collectors.joining())进行比较,虽然比较耗时,但是好用是真的。 package list.demo; import java.io.Serializable; import java.util.*; import java.util.stream.Collectors...
  • Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等),JavaBean也允许大写字母起头的属性变量名,不过必须满足“变量的前两个字母...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
  • Java 确定线程池中工作线程的大小

    万次阅读 2018-09-12 16:20:17
    a、服务器cpu核数有限,所以同时并发或者并行的线程是有限的,所以1核cpu设置1000线程是没有意义的。  b、线程切换也是有开销的。频繁切换线程会使性能降低。 2、调用sleep()函数的时候,县城是否会占用着CPU...
  • 我有一大学校友,他是去年 8 月份才开始正式学习 Java 的,之前在一家私企工作了 5 年,工资一月只有不到 6000 块,日子过得苦逼,毕竟郑州的房贷压力也不小,公司就那么,除非领导离职,否则根本看不到晋升...
  • java中的两个jre区别

    千次阅读 2010-09-16 12:10:00
     对于java初学者来说,往往不懂区分jdkjre的区别,实际上这两个东西差别很大的,有必要了解一下:  简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境运行环境。SDK是Software ...
  • 关于Java交换两个对象的问题

    万次阅读 2013-08-01 14:17:52
    关于Java交换两个对象的问题    对于C++比较熟悉的童鞋,应该知道在函数传参时,有传值、传地址(指针)传引用这3种。众所周知,Java中没有指针,所以只有传值传引用两种。  容易理解,Java的基本类型,...
  • java个数排序比较大小的完整代码,并给出详细解释,初学者,谢谢 ycip88c5级分类:其他被浏览63次2014.11.17 Dragon丶脩_ 采纳率:48%5级2014.11.17 public ...
  • java获取两个时间格式相差多少分钟

    万次阅读 2018-11-06 14:05:14
    然后就理了一下思路,有一点挺好的地方就是这数据库里的时间数据我只用获得今天的,那么我就可以先把现在的时间转换成HH:mm格式,然后把数据库的数据转换成date类型,这样不就可以获得相差的分钟了吗!...
  • Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
  • 【小家javajava7新特性(简述八新特性) 不温不火 【小家javajava8新特性(简述十大新特性) 饱受赞誉 【小家javajava9新特性(简述十大新特性) 褒贬不一 【小家javajava10新特性(简述十大新特性) ...
  • Java 计算两个日期相差多少年月日

    千次阅读 2019-03-20 16:20:07
    JDK7及以前的版本,计算两个日期相差的年月日比较麻烦。 JDK8新出的日期类,提供了比较简单的实现方法。 /** * 计算2个日期之间相差的 相差多少年月日 * 比如:2011-02-02 到 2017-03-02 相差 6年,1个月,0天...
  • 上面的函数中,调用了数学方法Math.maxMath.min,即分别可以取出两个数的最大最小值,在某些地方可以明显的看到java在处理数组,字符串的优越性与代码的简洁性。 方法三:三目运算符 条件 ? a : b a=5>3 ?...
  • 以一种简单的算法对3个数进行排序 package com.chinasofti.xunhuan; import java.util.Scanner; public class peixuwenti { /** * 输入三数字,然后按照从到小的顺序输出 * @param args */ public ...
  • 快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。  假如有如下的两个数组,如图所示:  5,6,1,4,7,9,8  
  • 今天忽然要对2Timestamp变量的类型进行比较。没怎么用过,百度发现居然多都是转换类型的。后面发现Timestamp自己都有方法进行比较。但是百度一堆都是那些要转换类型的。我就想简单的知道2Timestamp的时间哪个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,673,203
精华内容 669,281
关键字:

java比较两个很大的数之和

java 订阅