`
wwty
  • 浏览: 536662 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

java当中float以及double数据类型的掌握

阅读更多

 * java当中默认声明的小数是double类型的;

 * double d=4.0

 * 如果声明:

 * float x = 4.0则会报错,需要如下写法:

 * float x = 4.0f或者float x = (float)4.0

 * 其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义

 * 

 * float 内存分配4个字节,占32位,有效小数位6-7位

 * double 型 内存分配8个字节,有效小数位15位

 

flaot:

		float x = 3.56412f;
		float y = 5.13f;
		System.out.println(x+y);
 输出:8.69412

 

 *  在《Effective Java》这本书中也提到这个原则: float和double只能用来做科学计算或者是工程计算; 在商业计算中我们要用java.math.BigDecimal。

如下代码:

 

		double z = 3.564;
		double a = 5.13;
		System.out.println(z+a);

 输出:8.693999999999999

 

如果使用java.math.BigDecimal类进行计算:

   /**
    * 提供精确的加法运算。
    * @param v1 被加数
    * @param v2 加数
    * @return 两个参数的和
    */
    public static double add(double v1,double v2)
    {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2).doubleValue();
    }
 输出:8.694

 

由此引出减法的计算:

    /**
     * 提供精确的减法运算。
     * @param v1 被减数
     * @param v2 减数
     * @return 两个参数的差
     */
     public static double sub(double v1,double v2){
         BigDecimal b1 = new BigDecimal(Double.toString(v1));
         BigDecimal b2 = new BigDecimal(Double.toString(v2));
         return b1.subtract(b2).doubleValue();
     }

 

乘法的计算:

     /**
      * 提供精确的乘法运算。
      * @param v1 被乘数
      * @param v2 乘数
      * @return 两个参数的积
      */
      public static double mul(double v1,double v2) {
          BigDecimal b1 = new BigDecimal(Double.toString(v1));
          BigDecimal b2 = new BigDecimal(Double.toString(v2));
          return b1.multiply(b2).doubleValue();
      }

 

 除法的计算:

      /**
       * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
       * 小数点以后10位,以后的数字四舍五入。
       * @param v1 被除数
       * @param v2 除数
       * @return 两个参数的商
       */
       public static double div(double v1,double v2) {
           return div(v1,v2,10);
       }
       /**
       * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
       * 定精度,以后的数字四舍五入。
       * @param v1 被除数
       * @param v2 除数
       * @param scale 表示表示需要精确到小数点以后几位。
       * @return 两个参数的商
       */
       public static double div(double v1,double v2,int scale){
           if(scale<0){
               throw new IllegalArgumentException("The scale must be a positive integer or zero");
           }
           BigDecimal b1 = new BigDecimal(Double.toString(v1));
           BigDecimal b2 = new BigDecimal(Double.toString(v2));
           return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
       }

 

提供精确的小数位四舍五入处理:

       /**
        * 提供精确的小数位四舍五入处理。
        * @param v 需要四舍五入的数字
        * @param scale 小数点后保留几位
        * @return 四舍五入后的结果
        */
        public static double round(double v,int scale) {
            if(scale<0){
                throw new IllegalArgumentException("The scale must be a positive integer or zero");
            }
            BigDecimal b = new BigDecimal(Double.toString(v));
            BigDecimal one = new BigDecimal("1");
            return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
        }
 
分享到:
评论

相关推荐

    Java实现IEE754 Float类型数据

    Java实现IEE754 Float类型数据

    java基本数据类型.docx

    在Java中,基本数据类型是指原始的数据类型,它们是用于存储基本数据值的数据类型。Java的基本数据类型包括以下几种: 整数类型:byte、short、int、long 浮点类型:float、double 字符类型:char 布尔类型:...

    java数据类型的转换简单数据类型之间的转换 (2). 字符串与其它数据类型的转换 (3). 其它实用数据类型转换

    一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...

    Java数据类型及其转换详解

    ⑴ Java简单类型与封装类 我们知道,Java语言是...当然,Java在提供大量的其它类时,也提供了与简单数据类型对应的封装类,于是,Java中就有了诸如int和Integer(float和Float、double和Double……)的不同的数据类型。

    java中数据类型转换

    java中数据类型转换 收藏 java中数据类型转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i =...

    Java 基本知识之基本数据类型

    Java 基本数据类型   Java的基本类型有8种。 按大类分,Java 有两大数据类型:内置数据类型、引用数据类型。 byte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是-128(-2^7); 最大值是127(2^7-1...

    Java程序设计基础:基本数据类型.pptx

    掌握Java基本数据类型 掌握直接量的表示 计算机的基本作用就是做运算。运算的数据可以由用户输入、从文件获得。 我们可以把数据进行归类,整数、小数、一串字符、单个字符。 数据类型 例如 课程名称:“高等数学”、...

    java与com基本数据类型的交互

    因业务需要,把涉及到java与com交互的基本数据类型都测试了一般, 其中包括了byte、int、float、double、boolean、string,还有数组(SafeArray)。 char型未通过测试,jacob应该不支持该类型。 其中数组比较特殊,...

    Java的8大基本数据类型.pdf

    double数据类型是双精度、64位、符合IEEE 754标准的浮点数;默认值:0.0d,double d = 2.3; 描述整数默认⽤int,描述⼩数默认⽤double。long⼀般⽤于描述⽇期、时间、内存、⽂件⼤⼩,IO处理⼀般使⽤byte 字符型 ...

    Java基础知识之数据类型和操作符

    基本数据类型包括byte、short、int、long、float、double和char,它们代表了不同的数值类型。引用数据类型包括类、接口和数组,它们可以用来创建更复杂的数据结构。 在Java中,操作符是用于执行各种算术和逻辑操作...

    java+基本数据类型+详细介绍+资源合集

    java基本数据类型 ...八类基本数据类型:byte 、short 、int 、long,float 、 double,char,boolean 本资源里面详细介绍了关于java的基本数据类型的分类定义以及使用方法等,有需要的朋友可以下载使用。

    JAVA程序员面试宝典

    基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 2、应用...

    理解java中的基本数据类型

    有8种,分别是 boolean、byte、short、int、long、char、float、double

    Java中各个数据类型之间的转换

    在整数之间进行类型转换时,数值不发生改变,而,特将整数类型别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的...

    java笔试题 大学生应聘

    Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble...

    Java程序设计基础:字符数据类型.pptx

    掌握字符数据类型的表示 掌握字符型数据的操作 基本数据类型 数值型 基本数据类型 布尔型 (boolean) 字符型 (char) 整数类型 (byte、short、int、long) 浮点类型 (float、double) 字符内部Unicode字符编码,占2个...

    125条常见的java面试笔试题大汇总

    Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double ...

    java笔试题大汇总

    基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 ...

    阿里2017年Java学科面试测试题

    答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的...

    mobus rtu传输float 类型变量换算工具

    在进行工控数据采集时,很多设备都是使用RS485 接口传输modbus RTU协议数据,比较常见的是,传输一个字(2个bytes),但是有些变量超过了两个字节,比如float类型、int、long、double类型数据在modbus RTU传输时,该...

Global site tag (gtag.js) - Google Analytics