java数据转换和精度问题

文献种类:专题技术文献;
开发工具与关键技术:MyEclipse 10,java
作者:郭珮云 ;撰写时间2019年4月 15 日

自动类型转换(隐式类型转换) 整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级。
Byte->short(char)->int->long->float->double低级到高级顺序

小的数据类型转大的数据类型
byte byte1=50;
long int1=byte1+10;
System.out.println(int1);
int类型可自动转化为浮点类型,一般都有误差
float和double可以快速的运算,缺点在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,同样的计算它们的结果却不一样
double doubleValue1=1+5f;
double doubleValue2=floatValue1-10.6f;
System.out.println(doubleValue2);

float floatValue1=1+5f;
float floatValue2=floatValue1-10.6f;
System.out.println(floatValue2);

char charValue1 =‘v’;
int intValue2=charValue1+0;
System.out.println(intValue2 + “单个字符可以自动提升为int
”);
int intzhi=100;
byte bytezhi=(byte) intzhi;
System.out.println(bytezhi + “高级转低级必须使用强制转换”);

buyte bytezhi=(byte)-3.14;
System.out.println(bytezhi + “浮点数到整数的转换并非四舍五入,而是直接去掉小数得来”)

强制转换类型,会导致数据溢出或损失精度,慎用

short floatValue3=(short) Long.MAX_VALUE;
System.out.println(floatValue3 +“损失精度”);

计算浮点型要注意精度问题,比如金额方面
System.out.println(“1.06 + 0.01”+“这种小数的加减乘除算法都有精度丢失的情况”)
转换浮点型数据有几种写法

     BigDecimal big1= new BigDecimal("0.01"); 
     BigDecimal big2= BigDecimal.valueOf(0.0); 
     BigDecimal big3= new BigDecimal(0.01); 
     System.out.println("推荐使用"+ big1);
     System.out.println("推荐使用"+ big2);
     System.out.println("不推荐使用"+ big3);
     System.out.println("1.06 + 0.01 = " + big1.add(big2));
     System.out.println("1.06 - 0.01 = " + big1.subtract(big2));
     System.out.println("1.06 * 0.01 = " + big1.multiply(big2));
     System.out.println("1.06 / 0.01 = " + big1.divide(big2));
     System.out.println("1.06 ^ 2 = " + big1.pow(2));

输出结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44565782/article/details/89363303