Float之谜
先来看几个例子:
public class Thirtyfirst1{
public static void main(String[] args){
int i = 2000000000;
int count = 0;
for(float f = i; f < i + 50 ; f ++){
count++;
}
System.out.println(count);
}
}
会输出多少?
public class Thirtyfirst1{
public static void main(String[] args){
int i = 2000000000;
int count = 0;
for(float f = i; f < i + 64 ; f ++){
count++;
}
System.out.println(count);
}
}
这个会输出多少?
public class Thirtyfirst1{
public static void main(String[] args){
int i = 2000000000;
int count = 0;
for(float f = i; f < i + 65 ; f ++){
count++;
}
System.out.println(count);
}
}
这个输出多少?
第一题:0
第二题:0
第三题:死循环
再看下面的解析时需要知道浮点数的存储,以及int转float时的步骤(java浮点数剖析)
一、首先看看2000000000的二进制
01110111 00110101 10010100 0(0000000)
括号内为转换成浮点数后要舍弃的尾部
转换成浮点数后
0 10011101 11011100 11010110 0101000
S E M(23位)
二、然后观察2000000000+64
01110111 00110101 10010100 0(1000000)
转换成浮点数
0 10011101 11011100 11010110 0101000
发现和2000000000的浮点存储一模一样
三、然后观察2000000000+65
01110111 00110101 10010100 0(1000001)
显然
01110111 00110101 10010100 0 01110111 00110101 10010100 0(1000001)
01110111 00110101 10010100 1
显然中间的数更接近下面的数,因此浮点化之后
0 10011101 11011100 11010110 0101001
比2000000000的浮点存储大1
因此前两个程序打印0就可以理解了(重点要知道怎么转化成浮点数,以及怎么舍弃尾部)
四、1的浮点表示
0 01111111 0000000 00000000 00000000
五、浮点数的加减运算
对阶:
阶差位30
故f++对f基本上没有影响
因此会是死循环!!!
Float之谜的更多相关文章
- js实现省市区联动
先来看看效果图吧,嘻嘻~~~~~~~~~~~~~~~~~~~· 代码在下面: 示例一: html: <!DOCTYPE html> <html> <head> &l ...
- Microsoft HoloLens 技术解谜(下)
读者提问之“HoloLens 的深度传感器有没有可能是基于 TOF?” 先介绍下背景知识,市面上常见的有三种类型的深度传感器: 结构光,这个技术的代表产品是 Kinect 一代,它的传感器芯片用的是 ...
- Java常见问题3:周期之谜
谜24 byte是有符号的.范围是-128 - 127. 而0x90是int类型. 比較的时候.不相等. 假设想让其相等,须要进行类型转换:(byte & 0xff) 或者 (byte)0x9 ...
- CSS float 浮动属性
本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式:介绍文档流.浮动层以及float属性. 2. float:left :介绍float为 left 时的布局方式. 3. ...
- 在树莓派Raspbian下安装支持Hard Float的.NET环境
[题外话] 最近入了个树莓派玩,系统装的官方推荐的Hard Float的Raspbian,由于衍生自Debian,所以Mono什么的非常好装.但是官方源中的Mono在Hard Float的Raspbi ...
- 对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...
- CSS float 定位和缩放问题
今天调试一个看起来很简单的前端问题,但却花了太多的时间,示例代码: <!DOCTYPE html> <html> <head> <title></ ...
- chrome中不可见字符引发的float问题
起因是刷知乎时碰到这么个问题:https://www.zhihu.com/question/41400503 问题代码如下: <!DOCTYPE html> <html lang=& ...
- c# float显示时保存一位小数
UI显示时候,需求保留一位小数 //保留一位小数 参考: http://blog.sina.com.cn/s/blog_620531730100kfz6.html float ff = 1.01f; ...
随机推荐
- 公有云开启全面竞争时代——青云QingCloud
网界网本期[封面报道]公有云开启全面竞争时代 [CNW.com.cn 专稿] 险滩急流之后,公有云[注]服务市场的开拓者们终于看到了一片丰饶之海. 2013年,中国云计算[注]产业起步的第五年,公有云 ...
- 通过例子学python(2.2)
2.2 通用序列操作 #2.2 通用序列操作 #所有序列类型都可以进行的操作:索引indexing,分片sliceing,加adding,乘multiplying,成员资格, #计算序列长度,找出最大 ...
- rnqoj-73-展演队型-dp
纯属于敢想就敢做的题目,列出来状态转移就OK了 #include<stdio.h> #include<string.h> #include<iostream> #i ...
- UVA 424 (13.08.02)
Integer Inquiry One of the first users of BIT's new supercomputer was Chip Diller. Heextended his ...
- cf 702B
You are given n integers a1, a2, ..., an. Find the number of pairs of indexes i, j (i < j) that a ...
- HIVE自定义函数 UDF
自定义my_md5hash 具体hive源码怎么调用看我另外一篇博客 package udf.hive.myudf; import org.apache.commons.codec.digest.Di ...
- 《Linux Device Drivers》第十章 中断处理——note
概述:系统要及时的感知硬件的状态,通常有两种方式:一种是轮询.一种是通过响应硬件中断.前者会浪费处理器的时间,而后者不会. 准备并口 在没有节设定产生中断之前,并口是不会产生中断的 并口的标准规定设置 ...
- spring aop 如何切面到mvc 的controller--转载
原文:http://yjian84.iteye.com/blog/1920787 网上搜罗半天,不知道什么原因,看了源码,好像他们说的controller 是不受代理的,也对哈,不知道怎么办,于是在h ...
- Markdown写接口文档,自动添加TOC
上回说到,用Impress.js代替PPT来做项目展示.这回换Markdown来做接口文档好了.(不敢说代替Word,只能说个人感觉更为方便)当然,还要辅之以Git,来方便版本管理. Markdown ...
- Raphaël.js学习笔记
Rapheal.js 是一个矢量图绘图库.对于支持HTML5 SVG的浏览器使用SVG绘图,不支持SVG的IE(ie6,7,8)使用VML绘图.所以Raphael.js的兼容性非常好. Raphael ...