如何表示二进制,八进制,十六进制
二进制 0b 十进制 八进制 0 十六进制:0x
public class Demo01 { public static void main(String[] args) { int i1=10; int i2=010;//八进制 int i3=0x10;//十六进制 0~9 A~F System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println("************************************"); } }
运行结果:
银行业务怎么表示?
如果用浮点数来表示,会出现以下问题:
public class Demo02 { public static void main(String[] args) { float f=0.1f;//0.1 double d=1.0/10;//0.1 System.out.println(f); System.out.println(d); System.out.println(f==d); System.out.println("************************************"); float f1=23333333333333333f; double d1=f1+1; System.out.println(f1); System.out.println(d1); System.out.println(f1==d1); System.out.println("************************************"); } }
运行结果:
由运行结果可以明显看出,f和d在逻辑上都等于0.1,但是(fd)的结果是false;d1=f1+1,但是(f1d1)的结果是true。这是因为float的精度是有限的,所有表示出来的点是离散的,在与double比较时和舍入误差,与最后的结果的关系时接近但不等于。所以最好完全使用浮点数进行比较。
现在,在银行表示钱时,一般使用数学工具类:BigDecimal
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
由低到高的顺序为:
byte,short,char,int,long,float,double
运算中,不同类型的数据先转化为同一类型,然后进行运算。
public class Demo03 { public static void main(String[] args) { char c1='a'; char c2='中'; System.out.println(c1); System.out.println((int)c1);//强制转换 System.out.println(c2); System.out.println((int)c2);//强制转换 System.out.println("************************************"); char c3='\u0061'; System.out.println(c3); } }
运行结果:
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题