具体自动提升类型如上图所示。其中long->float的转换一开始让我感觉有点问题,因为long是64位的,而float却是32位的。

遂找寻答案,参考博客java中long到float的自动转换引发的血案

原因

首先要知道一点,float能表示的数的范围比long大,那么可想而知,一个long型数可以转为float型。

  long类型,取值范围是-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807(-263 ~ 263-1)

  float类型,取值范围是2^(-149) ---> (2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE

任何一个long类型的数字都可以使用float类型的表示方法来表示。但是,由于float有精度限制,所以在转换的过程中有可能丢失精度,

如3111111111111111L ---->3.1111111E15---->3111111100465152,在转换回来后就丢失了精度

其次要知道float的32位是如何表示小数的(大学的计算机组成原理课程学过,但忘了,现在学习一下,希望可以记住)。

float内存存储原理

http://steve.hollasch.net/cgindex/coding/ieeefloat.html(IEEE754标准)

(1)在10进制中123.456可以被表示成1.23456 × 10,在二进制中10100.110可以被表示成1.0100110 × 24

(2)浮点数有精度,超过精度的数无法被表示,如0.0000000000000001就是精确到小数点后x位。

(3)IEEE浮点数有三个部分组成:符号位(S),指数位(E),尾部(M),任何数都能以二进制表示以为S*1.M*2E

表示形式如下:
Single: SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
Double: SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM

(4)总结:float的表示范围为

java基本类型自动转换的更多相关文章

  1. java中汉字自动转换成拼音

    java中汉字自动转换成拼音 1.需要下载jar包 pinyin4j.2.5.0.jar ,加入到WEB-INF下的lib里边,右键add to bulid path. 2.[代码]PinYinUti ...

  2. JavaScript的类型自动转换高级玩法JSFuck

    0 前言 最开始是不小心在微信公众号(程序员大咖)看到一篇JS的高逼格代码,然后通过里面的链接跳转到了JSFuck的wiki,就像顺着迷宫找宝藏的感觉,感叹JS的自动类型转换的牛逼. 1 样例 (!( ...

  3. tp类型自动转换和自动完成

    一.类型自动转换 在模型中对数据库字段自动完成 //模型中数据类型自动转换 添加一个$type数组即可protected $type=array( 'username'=>'serialize' ...

  4. 类型转换构造函数 及使用explicit避免类型自动转换------新标准c++程序设计

    类型转换构造函数:  除复制构造函数外,只有一个参数的构造函数一般可以称作类型转换构造函数,因为这样的构造函数能起到类型自动转换的作用.例如下面的程序: #include<iostream> ...

  5. 3_PHP表达式_5_数据类型转换_类型自动转换

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. PHP类型转换分为类型自动转换和类型强制转换. 1.布尔型数据参与算数运算时,TRUE被转换为整数1,FALSE被 ...

  6. Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑

    先来看一个例子: package com.test; public class calculate { /** * 光速30万公里/秒 */ public static final int LIGHT ...

  7. spring类型自动转换——@InitBinder和Converter

    spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...

  8. struts2(二) 表单参数自动封装和参数类型自动转换

    前篇文章对struts2的一个入门,重点是对struts2的架构图有一个大概的了解即可,之后的几篇文章,就是细化struts2,将struts2中的各种功能进行梳理,其实学完之后,对struts2的使 ...

  9. struts2(三)之表单参数自动封装与参数类型自动转换

    前言 对struts2的使用不外乎这几点,参数自动封装,拦截器的使用,数据校验,ognl表达(值栈和actionContext的讲解),struts2的标签,struts2的国际化, struts2的 ...

随机推荐

  1. mongodb 问题

    启动mongodb时,提示Unclean shutdown detected mongodb,解决方法很简单 mongod --repair --dbpath D:\MongoDB\blog   不用 ...

  2. 同一台服务器配置多个tomcat服务的方法

    要在同一台服务器上配置多个tomcat服务,需要解决以下几个问题 (1) 不同的tomcat启动和关闭监听不同的端口 (2) 不同的tomcat的启动文件startup.sh 中要指定各自的CATAL ...

  3. [redis]Redis Transaction

    https://github.com/phpredis/phpredis#transactions Transactions multi, exec, discard - Enter and exit ...

  4. GeoServer中配置GeoWebCache切片缓存目录

    war版的GeoServer中,默认情况下,GeoWebCache切片会缓存在C盘某目录下.该目录比较隐蔽,并且随着切片缓存的增多,所占空间也会越来越大,所以建议手动配置其切换缓存目录. 配置方式:在 ...

  5. .NET 任务调度Quartz系列(1)——自建定时任务

    在我们平时项目中经常会遇到定时任务,比如定时同步数据,定时备份数据,定时统计数据等,定时任务我们都知道使用Quartz.net,此系列写的也是Quartz,但是在此之前,我们先用其他方式做个简单的定时 ...

  6. jQuery-Load方法

    1.load() 介绍:load() 方法通过 AJAX 请求从服务器加载数据,并把返回的数据放置到指定的元素中 该方法是最简单的从服务器获取数据的方法.它几乎与 $.get(url, data, s ...

  7. 通过NuGet安装和配置ODP.NET(Oracle Data Provider for .NET)

    前言 本文涉及ODP.NET.ODP.NET的托管(managed)驱动.Entity Framework的托管驱动 这三部分的下载.安装.配置. 1.简介 NuGet 是.NET的软件开发包管理工具 ...

  8. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  9. 配置国内的maven仓库

    MAVEN中央仓库 国内 配置Maven中央仓库路径的方法如下: 在Maven文件的conf目录中打开settings.xml文件 在文件中的servers节点和mirror节点中加入如下内容 华为云 ...

  10. 【JavaScript】 js立即执行函数

    ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,一般理解是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函 ...