day1 基本数据类型

类型              所需字节               实际范围       整数部分的不需要记忆,需要用到的时候使用 Integer.MAX_VALUE or Integer.Min_VALUE

byte               1字节 (8位)      -128~127    

short             2字节                     -32768~32767

int                  4字节                    -2147483648~2147483647   也就是21亿左右

long              8字节                    没数错的话922亿亿左右,真大,,也就是 -2^63~ 2^63-1  补码


float              4字节                    正负1.175494351 E – 38 ~ 3.402823466 E + 38 以及0 精度是小数点后7位 ,根据实际情况会产生进位,但是并不是四舍五入(原因不知)

double         8字节                   正负2.2250738585072014 E – 308 ~ 1.7976931348623158 E + 308 以及 0 精度是小数点后15位 ,后同上

声明的时候只需在末尾加上f 或者d即可


char           2字节                本想用sizeof查看一下char的大小,但是java好像并没有提供sizeof 想要了解所占大小 用Integer.SIZE查看 (位数)

boolean    1字节         true/false


以上分别对应的包装类是: Byte  Short Integer Long Float Double Character Boolean    同属java.lang.*


当对精度有严格要求时:要使用java.math.BigDecimal

Java中如何解决double和float精度不准的问题

以防丢失,拷过来:

    package ex;  
      
    import java.math.*;  
      
    public class BigDecimalDemo {  
        public static void main(String[] args){  
            System.out.println(ArithUtil.add(0.01, 0.05));  
            System.out.println(ArithUtil.sub(1.0, 0.42));  
            System.out.println(ArithUtil.mul(4.015, 100));  
            System.out.println(ArithUtil.div(123.3, 100));  
        }  
    }  
      
    class ArithUtil{  
        private static final int DEF_DIV_SCALE=10;  
          
        private ArithUtil(){}  
          
        public static double add(double d1,double d2){  
            BigDecimal b1=new BigDecimal(Double.toString(d1));  
            BigDecimal b2=new BigDecimal(Double.toString(d2));  
            return b1.add(b2).doubleValue();  
              
        }  
          
        public static double sub(double d1,double d2){  
            BigDecimal b1=new BigDecimal(Double.toString(d1));  
            BigDecimal b2=new BigDecimal(Double.toString(d2));  
            return b1.subtract(b2).doubleValue();  
              
        }  
          
        public static double mul(double d1,double d2){  
            BigDecimal b1=new BigDecimal(Double.toString(d1));  
            BigDecimal b2=new BigDecimal(Double.toString(d2));  
            return b1.multiply(b2).doubleValue();  
              
        }  
          
        public static double div(double d1,double d2){  
      
            return div(d1,d2,DEF_DIV_SCALE);  
              
        }  
          
        public static double div(double d1,double d2,int scale){  
            if(scale<0){  
                throw new IllegalArgumentException("The scale must be a positive integer or zero");  
            }  
            BigDecimal b1=new BigDecimal(Double.toString(d1));  
            BigDecimal b2=new BigDecimal(Double.toString(d2));  
            return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();  
              
        }  
          
    }  
输出结果 : 0.06  0.58  401.5  1.233 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值