ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浮点型数据

2021-08-29 19:00:39  阅读:137  来源: 互联网

标签:10.0 int double float 浮点 类型 数据


/*
关于java语言中的浮点型数据
浮点型包括:
float 4个字节
double 8个字节

float是单精度
double是双精度

double更精确

比如说:
10.0 / 3 如果采用float来存储的话结果可能是:3.33333
10.0 / 3 如果采用double来存储的话结果可能是:3.33333333333333

但是需要注意的是:如果用在银行方面或者说使用在财务方面,double
也是远远不够的,在java中提供了一种精度更高的类型,这种类型专门
使用在财务软件方面:java.math.BigDecimal (不是基本数据类型,属于
引用数据类型。)

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

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

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

*/

public class F
{
  public static void main(String[] args)
  {
    // 这个不存在类型转换
    // 3.1415926是double类型
    // p1是double类型
    double p1 = 3.1415926;
    System.out.println(p1);

    // 这个可以吗?
    // 错误:不兼容的类型:从double转换到float可能会有损失。
    // float f = 3.14;

    // 怎么修改以上的代码呢?
    // 第一种方式:在字面量后面添加F/f
    //float f = 3.14f;
    //float f = 3.14F;

    // 第二种方式:强制类型转换,但可能损失精度,谨慎使用。
    float f = (float)3.14;
    System.out.println(f);

    // 分析这个程序,可以编译通过吗?
    // 错误:不兼容的类型从double转换到int可能会有损失。
    // 原理:先将5转换成double类型。然后再做运算,结果是double
    // 大容量无法直接赋值给小容量,需要强转。
    // int i = 10.0 / 5;

    // 怎么修改
    int i = (int)10.0 / 5;
    System.out.println(i); // 2

    // 可以这样修改吗?
    int x = (int)(10.0 / 5);
    System.out.println(x); // 2

  }
}

标签:10.0,int,double,float,浮点,类型,数据
来源: https://www.cnblogs.com/874162650-com/p/15203307.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有