关于java语言中的浮点型数据

  1. 浮点型包括:<br /> float 4个字节<br /> double 8个字节<br /> <br /> float是单精度<br /> double是双精度<br /> <br /> double更精确<br /> <br /> 比如说:<br /> 10.0 / 3 如果采用float来储存的话结果可能是:3.33333<br /> 10.0 / 3 如果采用douublet来储存的话结果可能是:3.333333333333<br /> <br />但是需要注意的是,如果用在银行方面或者说使用在财务方面,double也是远远不够的,在java中提供了一种精度更高的类型,<br /> 这种类型专门使用在财务软件方面:java.math.BigDecimal(不是基本数据类型,属于引用数据类型。)<br />

float和double存储数据的时候都是存储的近似值。

为什么?
因为现实世界中有这种无限循环的数据,例如:3.3333333333333333333…
数据实际上是无限循环,但是计算机的内存有限,用一个有限的资源表示无限的数据,只能存储近似值。

long类型占用8个字节。
float类型占用4个字节
哪个容量大?
注意:任意一个浮点型都比整数型空间大。
float容量 > long容量。

java中规定,任何一个浮点型数据默认被当做double来处理。

如果想让这个浮点型字面量被当做float类型来处理,那么请在字面量后面添加F/f。
1.0 那么1.0默认被当做double类型处理。
1.0F 这才是float类型。(1.0F)

  1. public class FloatT{
  2. public static void main(String[] asge){
  3. // 这个不不存在类型转换
  4. // 3.1415926是double类型
  5. // pi是double类型
  6. double pi = 3.1415926;
  7. System.out.println(pi);
  8. //这个可以吗?
  9. //错误:不兼容的类型:从double转换到float可能会有损失
  10. //float f = 3.14;
  11. // 怎么修改以上代码呢?
  12. // 第一种方式:在字面量后面添加F/f
  13. //float f = 3.14f;
  14. float f = 3.14F;
  15. // 第二种方式:强制类型转换,但可能损失精度。谨慎使用。
  16. float f = (float)3.14;
  17. System.out.println(f);
  18. // 分析这个程序,可以编译通过吗?
  19. // 错误:不兼容的类型:从double转到int可能会有损失
  20. // 原理:先将5转换成double类型,然后再做运算,结果是double
  21. // 大容量无法直接赋值给小容量,需要强转。
  22. //int i = 10.0 / 5;
  23. // 怎么修改
  24. int i = (int)10.0 / 5;
  25. System.out.println(i); // 2
  26. // 可以这样修改吗?强转的时候只留下整数位。
  27. int x = (int)(10.0 / 5);
  28. System.out.println(x); // 2
  29. }
  30. }