精华内容
下载资源
问答
  • 废话不多上干货! /** * 个人数学工具 * * @author Suage */ class Convert { //可用计数字符 private static String unit = 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ; //输入数字 private String number;...
  • java小数计算精度

    千次阅读 2019-02-24 21:19:51
    说到Java浮点数新手第一想到的就是使用double。Java中double类型与float类型的精度不同,计算时精度会发生丢失甚至错误,在数值过大的情况下会变成科学计数法表示。....

    前言

    说到Java浮点数新手第一想到的就是使用double。有些人知道Java中double类型与float类型的精度不同,计算时精度会发生丢失甚至错误。
    我也知道小数使用double与float会造成精度问题,但是一直都没有关心到底应该如何解决,最近工作中碰到了一个上千万的小数计算,才发现使用double计算小数不仅仅精度会错,在数值过大的情况下会变成科学计数法表示。

    1.double与float

    public static void main(String[] args) {
    	// Java中小数默认为double类型
    	System.out.println(100000000000000.0 + 0.9);
    	
    	Double double1 = 100000000000000.0d + 0.9d;
    	System.out.println(double1.toString());
    
    	Float float1 = 100000000000000.0f + 0.9f;
    	System.out.println(float1.toString());
    
    	Double double2 = (double) (100000000000000.0f + 0.9f);
    	System.out.println(double2.toString());
    }
    
    结果:
    1.000000000000009E14
    1.000000000000009E14
    1.0E14
    1.00000000376832E14
    

    2.BigDecimal

    可以看出关于大小数的计算使用double与float不仅会使精度丢失还会变成科学计数法表示,此时如果需要计算所得出数字类型的结果需要使用BigDecimal类型。

    但是使用BigDecimal计算时又发现了这样一个情况:

    BigDecimal bigDecimalDouble = new BigDecimal(100000000000000.0d).add(new BigDecimal(0.9d));
    System.out.println(bigDecimalDouble.toString());
    
    结果:
    100000000000000.90000000000000002220446049250313080847263336181640625
    

    为了最大化的消除精度影响,必须使用String参数构造BigDecimal 即:

    BigDecimal bigDecimalString = new BigDecimal("100000000000000.0").add(new BigDecimal("0.9"));
    System.out.println(bigDecimalString.toString());
    
    结果:
    100000000000000.9
    

    特别注意!!!

    BigDecimal 比较大小不可以直接使用<>=,也不可以使用equlse进行比较
    需使用compareTo函数进行比较大小运算

    boolean i = new BigDecimal("1.0").compareTo(new BigDecimal("1.00")) == 0;
    boolean i1 = new BigDecimal("1.0").equals((new BigDecimal("1.00")));
    boolean i2 = new BigDecimal("1.0") == (new BigDecimal("1.00"));
    System.out.println(i + "," + i1 + "," + i2);
    
    结果:
    true,false,false
    
    展开全文
  • 主要为大家详细介绍了java精度计算代码,java指定精确小数位,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java小数位的例子

    2020-09-04 22:04:49
    java中要保留数字小数位我们有常用的四种方法,分别为:四舍五入,DecimalFormat,format,String .format与struts标签操作实现,下面给出例子
  • java 小数分数转换

    千次阅读 2020-05-05 23:12:33
    从标准输入中输入一个小数,编写程序将其转换成相应的分数显示,即转换为几又几分之几。 要求: 1、输入的小数包括整数部分、小数点和小数部分;整数部分和小数部分最多有7位数字;整数部分可以为0,若整数部分大于...

    【问题描述】

    从标准输入中输入一个小数,编写程序将其转换成相应的分数显示,即转换为几又几分之几。
    要求:
    1、输入的小数包括整数部分、小数点和小数部分;整数部分和小数部分最多有7位数字;整数部分可以为0,若整数部分大于等于1,则其最高位不为0;小数部分的末尾数字不为零。
    2、输出的分数应为最简分数,由三个数字组成:第一个数字代表整数部分(若分数小于1,则为0,否则输出的整数的最高位不为0),第二个数字代表分子,第三个数字代表分母,分子比分母小且不能再约分。

    【输入形式】

    从标准输入中输入一个小数后打回车。

    【输出形式】

    将三个整数输出到标准输出,并且分别以一个空格分隔,最后一个整数后没有空格,有回车换行。

    【样例1输入】

    0.35

    【样例1输出】

    0 7 20

    【样例2输入】

    1050.0144

    【样例2输出】

    1050 9 625

    【样例说明】

    样例1中输入的小数为0.35,整数部分为0,小数部分转换为分数为35/100,约分成最简分数为7/20。
    样例2中输入的小数为1050.0144,整数部分为1050,小数部分转换为分数为144/10000,约分成最简分数为9/625。

    【评分标准】该题要求编程实现小数到分数的转换。

    package eight;
    
    import java.util.Scanner;
    
    import java.math.*;
    
    public class One {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int z,l,b,c;
    		double x,n;
    		Scanner sc=new Scanner(System.in);
    		n=sc.nextDouble();
    		z=(int)n;
    		BigDecimal p=new BigDecimal(n);
    		BigDecimal q=new BigDecimal(z);
    		BigDecimal y=p.subtract(q);
    		x=y.setScale(8,   BigDecimal.ROUND_HALF_UP).doubleValue();
    		String a=""+x;
    		l=a.length()-2;
    		b=(int)Math.pow(10,l);
    		c=(int)(b*x);
    		if(c==0)
    			System.out.println(n);
    		else if(c==1)
    			System.out.println(z+" "+c+" "+b);
    		else if(c!=0)
    		{
    			for(int i=c;i>1;i--)
    			{
    				if(b%i==0&&c%i==0)
    				{
    					b=b/i;
    					c=c/i;
    					System.out.println(z+" "+c+" "+b);
    					break;
    				}
    				else if((b%i!=0||c%i!=0)&&i==2)
    				{
    					System.out.println(z+" "+c+" "+b);
    					break;
    				}
    				else 
    					continue;
    			}
    		}
    		
    	}
    
    }
    
    
    展开全文
  • java 小数相加

    2019-09-17 03:32:25
    import java.math.BigDecimal; /** * 类描述: * @version 1.0 * @author chenairu * */ public class TM { public static void main(String[] args) { ...
    import java.math.BigDecimal;
    /**
     * 类描述:
     * @version 1.0
     * @author chenairu
     * 
     */
    public class TM {
    	public static void main(String[] args) {
    		String s1 = "0.00001";
    		String s2 = "0.00002";
    		String s = s1+ s2;
    		Double db1 = Double.valueOf(s1);
    		Double db2 = Double.valueOf(s2);
    		
    		BigDecimal bs1 = new BigDecimal(s1);
    		BigDecimal bs2 = new BigDecimal(s2);
    		
    		BigDecimal bs11 = new BigDecimal(db1);
    		System.out.println("s:"+s);
    		System.out.println("db1:"+bs1.add(bs2));
    		System.out.println("bs11:"+bs11.add(new BigDecimal(db2)));
    		System.out.println("db1+db2:"+(db1+db2));
    	}
    }

    转载于:https://my.oschina.net/chenxiaoxiao/blog/718523

    展开全文
  • stripTrailingZeros

    stripTrailingZeros

    展开全文
  • java 小数转百分比

    2018-12-26 08:42:00
    NumberFormat percent = NumberFormat.getPercentInstance(); percent.setMaximumFractionDigits(2); //保留多少位 String result = percent.format(res.getFloat("score")).toString(); ...
  • Java小数截断

    千次阅读 2017-11-21 15:37:07
    本文对Java小数截断的几种方式进行了总结。
  • 向上取整:Math.ceil(double a) 向下取整:Math.floor(double a) 四舍五入取整:Math.round(double a) 例: Math.ceil(24.1)–> 25 Math.floor(24.8)–> 24 Math.round(24.1)–>...
  • Java小数转换成百分数

    千次阅读 2017-10-17 19:56:20
    Java 两个整数相除保留两位小数,整数相除转百分比,根据hashMap中的value值进行排序。Java获取时间差,分钟差
  • js,java小数取整

    千次阅读 2017-10-30 10:43:39
    1、Javascript Math ceil()、floor()、round()三个函数的...ceil():将小数部分一律向整数部分进位,浮点数转换成整数,如果有小数(1.00不算有小数),整数加1。 如:   Math.ceil(12.2)//返回13 Math.ceil(12.7)//
  • java 小数转换成百分数 四舍五入

    千次阅读 2018-12-18 15:14:30
    下面列举 小数转百分数有三种方法 double c = (double) 8 / (double) 9; 1,不四舍五入 直接转成字符串截取  System.out.println(String.valueOf(c * 100).substring(0, 5) + "%"); 2,四舍五入 ...
  • java 小数转换成百分比显示

    千次阅读 2017-06-02 12:02:07
    //这里的数后面加“D”是表明它是Double类型,否则相除的话取整,无法正常使用 ... //输出一下,确认你的小数无误  System.out.println("小数:" + percent);  //获取格式化对象  NumberFormat nt
  • 主要介绍了Java四舍五入时保留指定小数位数的五种方式,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
  • 主要介绍了Java中Double保留后小数位的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • java小数和百分数互转

    千次阅读 2017-04-08 08:32:38
    1:小数转百分数 package com.test; import java.text.NumberFormat; public class TeachYou { public static void main(String[] args) { //这里的数后面加“D”是表明它是Double类型,否则相除的话取整,无法...
  • java保留两位小数

    千次阅读 2019-08-09 11:32:03
    java保留两位小数 1.使用java类库中自带的DecimalFormat类,使数字输出结果保留2位小数 代码如下: 运行结果如下: 2. 输出结果为: String.format表示字符串的格式化 3.使用BigDecimal四舍五入方法 需要导入...
  • java编写的表达式求值(支持小数,指数运算),第一次上传,多多指教
  • js和java 小数后补齐0 整数前补齐0

    千次阅读 2016-10-26 10:59:56
    js:小数后补齐0 var demo =0.00138; alert(demo.toFixed(6)); toFixed(number),格式化数字为...java: 小数后补齐0:String.format("%.6f",0.03f); 结果为:0.030000 整数前补齐0:String.format("%06d
  • JAVA 小数取整

    2013-05-09 14:17:50
    最近用到了小数取整的问题,Math提供了小数取整的方法,记下来,方便以后使用 Math.ceil(double)//向上取整 Math.floor(double)//向下取整(0.1 结果为0.0)
  • java 小数精度问题

    千次阅读 2018-05-31 16:36:22
    1、原因由于浮点数在转化为二进制时无法运算完结,所以会无限循环下去,导致运算结果达不到期望值。例如:1.14,转化为二进制,然后再转回十进制就变成了:1....import java.math.BigDeci...
  • java 小数 去除 尾部 0

    2013-10-30 17:32:21
    返回数值上等于此小数,但从该表示形式移除所有尾部零的 BigDecimal。例如,从 BigDecimal 值 600.0 中移除尾部零,该值具有的 [BigInteger, scale] 组件等于 [6000, 1],使用 [BigInteger, scale] 组件生成...
  • import java.text.NumberFormat; public class TeachYou { public static void main(String[] args) { //这里的数后面加“D”是表明它是Double类型,否则相除的话取整,无法正常使用 double percent = 50.5D / ...
  • Java中限制小数位数问题,平常经常遇到的小问题。
  • 一种阿拉伯数字(含小数部分)转中文汉字的算法,例如通过键盘输入 123011221.1201,则输出 一亿二千三百零一万一千二百二十一点一二零一(或 壹亿贰仟叁佰零壹万壹仟贰佰贰拾壹点壹贰零壹)。
  • java小数转 整数

    千次阅读 2020-05-28 16:24:25
    Double d = 1.05; Integer i = d.intValue(); System.out.println(i); // 1

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,009
精华内容 52,403
关键字:

java小数

java 订阅