有趣的Java之调皮的浮点数】的更多相关文章

**当你在写一个电商网站的时候,你可能会给你的商品标价1.99,10.9这样的价格来吸引顾客.我应该用浮点数float/double来储存它们,当我的顾客购买商品的时候,从他们的账户里扣费,使用整型是不可能的.你可能会这么想. **如果你的顾客账号里的钱刚好是1950.00,5001.00这样的整元,那么恭喜你,你的想法是没有错的.但是一旦有一位顾客的账号里还有若干毛,若干分钱没花完,那你的程序就会得到一个错误的数值!很无奈的是,你无法通过报错信息找到它,如果你已经用浮点型float/doubl…
如果我们编译运行下面这个程序会看到什么? public class Test  {    public static void main(String args[]) {                System.out.println(0.05 + 0.01);        System.out.println(1.0 - 0.42);        System.out.println(4.015 * 100);        System.out.println(123.3 / 100…
浮点数的基本数据类型不能用==比较,包装数据类型不能用 equals 比较 浮点数的表示 在计算机系统中,浮点数采用 符号+阶码+尾数 进行表示.在Java中,单精度浮点数float类型占32位,它的二进制表示方式为: 符号位:1位,0表示正数: 1表示负数 指数位:8位,用来表示指数(要加上偏移量) 小数位:23位,用来表示小数 实际上计算机中的浮点数表示方法和科学技术法类似,小数的位数决定了浮点数的精度.当一个十进制的小数转换成二进制时,很有可能无法使用这么多小数位表示它.因此使用浮点数的时…
这么说吧,在我眼里,Java 就是最流行的编程语言,没有之一(PHP 往一边站).不仅岗位多,容易找到工作,关键是薪资水平也到位,不学 Java 亏得慌,对吧? 那可能零基础学编程的小伙伴就会头疼了,网上关于 Java 的大部分技术文章都不够幽默,不够风趣,不够系列,急需要一份能看得进去的学习手册,那我觉得我肝的这份手册正好符合要求,并且会一直持续更新下去. 第一版的内容暂时包含两方面,Java 基础和 Java 面向对象编程.来吧,先上目录,一睹为快. 01.Java 基本语法简介02.Jav…
看下面这段代码,将 d1 和 d2 两个浮点数进行比较,输出的结果会是什么? double d1 = .1 * 3; double d2 = .3; System.out.println(d1 == d2); 按照正常逻辑来看,d1经过计算之后的结果应该是0.3,最后打印的结果应该是 true,对吧?但是运行一下就会发现结果并不是 true 而是 false . 输出一下 d1,发现得到的答案不是想象中的 0.3 而是 0.30000000000000004,所以和 d2 进行比较结果自然是 f…
部分与整体以某种形式相似的形,称为分形. 首先我们举个例子:        我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形.换句话说,较小的分支通过放大适当的比例后可以得到一个与整体几乎完全一致的花簇.因此我们可以说西兰花簇是一个分形的实例. 分形一般有以下特质: 在任意小的尺度上都能有精细的结构: 太不规则,以至难以用传统欧氏几何的语言描述: (至少是大略或任意地)自相似豪斯多夫维数会大於拓扑维数: 有著简单的递归定义. (i)分形集都具有任意小尺度下的比例细…
原文:https://my.oschina.net/u/1462914/blog/1630086 引言 熟悉Java的童鞋,应该对OOM比较熟悉.该类问题,一般都比较棘手.因为造成此类问题的原因有很多.今天就分享一个非常有意思的案例.(说实话.这个问题,我也是前两天才遇到的.花了不少时间来分析.觉得非常有意思,记录在此.大神勿喷!) 问题场景 重启应用时,调试到给MQ发消息时.有如下错误: Exception in thread "Thread-4" java.lang.OutOfMe…
package com.aaa; //总结:猜拳游戏主要掌握3个方面:1.人出的动作是从键盘输入的(System.in)2.电脑是随机出的(Random随机数)3.双方都要出(条件判断) import java.util.Scanner; public class bbb { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("----猜拳游戏----&…
记录缘由: 公司项目需要从xml中获取标识为NUMBER的字符串,将之存入数据库中,存入的列的类型即为NUMBER.当遇到非数字时,原实现是通过异常: String plainValue = null; try { plainValue = new BigDecimal(colValue).toPlainString(); } catch (Exception e) { plainValue = ""; } 没有去研究过BigDecimal(String)这个构造方法的内部实现,得空去…
/*<java疯狂讲义>浮点数转换为人名币读法字符串这个用例,感觉没有考虑零的情况*/ import java.util.Arrays; public class Num2Rmb { private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","…
转自http://blog.csdn.net/seizef/article/details/5571783#ref_1,有删改. 先简单介绍一下浮点数在计算机中的组成,在Java中采用的浮点数表示法是IEEE754标准. 任意一个二进制浮点数V可以表示成下面的形式,进一步说明请参照[1]: (1)(-1)^s表示符号位,当s=0,V为正数:当s=1,V为负数. (2)M表示尾数,范围是[1,2)(规格化)或者是[0,1)(非规范化). (3)2^E表示阶码. 当用浮点数来表示整数时,我们要得到连…
定点数表达法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数.计算机系统采纳了所谓的浮点数表达方式.这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa也叫有效数字 ),一个基数(Base),一个指数(Exponent)以及 一个表示正负的符号来表达实数.浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数. 当一个浮点数的尾数为0,不论其阶码为何值,该浮点数的值都为0.当阶码的值为它能表示的最…
问题的提出:如果我们编译运行下面这个程序会看到什么? public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println("BigDecimal:"+new BigDecimal(Double.toString(4.015)).multiply(new B…
浮点数会有精度损失这个在上大学的时候就已经被告知,但是至今完全没有想明白其中的原由,老师讲的时候也是一笔带过的,自己也没有好好琢磨.终于在工作的时候碰到了,于是google了一番. 问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: 1 System.out.println(19.99+20); 2 System.out.println(1.0-0.66); 3 System.out.println(0.033*100); 4 System.out.println(1…
标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.…
Java语言是一种强类型语言.这意味着每个变量都必须有一个声明好的类型.Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型.Java另外还提供大数字对象,但它不是Java的数据类型. 1.整数: 定义:没有小数部分的数字,负数是允许的. 种类:Java提供四种整数类型:         byte 1个字节(8bit) -128到127(-27~27-1)  默认为0 ,如 byte b=28; short 2个字节(16bit) -32,768到…
2.11 指令集简介 java虚拟机指令由一个字节的操作码,接着时0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据.许多指令没有操作数只包含一个操作码. 如果忽略异常处理,那java虚拟机使用下面的伪代码循环即可有效工作: do{ 自动计算pc然后获取pc中的操作码; if (存在操作数) 获取操作数; 执行这个操作码定义的操作 }while(是否有更多需要执行); 操作数的数量和大小都有操作码决定.如果一个操作数大于一个字节,那么它将以大端顺序存储——高位在前.…
<实战录>导语 一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃.哈哈,开个玩笑.今天我想借此机会来和大家聊聊Java多线程.文中若有错误还请各位小伙伴及时指出. Java是一种跨平台,适合于分布式计算环境的面向对象编程语言.关于Java的优点,我想每个刚接触Java的朋友,都会听过你的Java启蒙老师说过这么一句话:"一次编译,到处运行".这个"到处运行"是说任何平台上只要安装了JR…
标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.…
public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.println(4.015*100);        System.out.println(123.3/100);    }};你没有看错!结果确实是0.060000000000000005…
首发至个人博客http://www.zidafone.com/blog/36 以下是对一些读过的书和一些买后随便翻了翻的书的个人感觉.都是java web开发的程序员可能接触的书,其他的如设计/手机开发/其他语言的书就不写了,因为自己只做过java web开发,那些书没什么资格评判.因为不是每本书都翻开确定一下再写的,可能有张冠李戴或记忆错误的情况,如发现了请指正.如有好书我这里没列举到的,请补充.此书单将持续完善. js书籍: <Javascript权威指南>犀牛书厚,唯一的顶尖著作,上册的…
一.问题的提出: 如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.println(4.015*100);        System.out.println(123.3/100);    }};你没…
本文转载于:http://code.csdn.net/news/2822604 有很多备受关注的初创开源项目,下面列出十个项目是我觉得非常有趣的,涉及到的学习范围也很广.其中有些还在早期阶段,这对我们来说更好. 如果你正在寻找有趣的 Java 项目想参与和贡献,那么请继续阅读这篇文章.这篇博文是 Java 画廊(Java Gallery)中的一部分,在Java画廊栏目下我介绍了一些有趣的Java项目给我们的读者.成为 Java 开发团队中的一员并编写大量代码是一件很棒的事情. 在学校里我们也许没…
在java中提供了大数字的操作类,即java.math.BinInteger类和java.math.BigDecimal类.这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类. BigDecimal                                                                                BigDecimal的实现利用到了BigInteger,不同的是BigDe…
20145103 <Java程序设计>第3周学习总结 教材学习内容总结 第四章我首先了解了CPU与内存的关系,栈与堆的关系.要产生对象必须先定义类,类是对象的设计图,对象是累的实例.以类名称声明的变量,就是参考名称.Java语言遵守IEEE754浮点数运算规范,使用分数与指数来表示浮点数.无论System.arraycopy()还是Arrays.copyOf(),用在类类型声明的数组时,都是执行浅层复制.所谓浅层复制,大概就是只复制指向对象的指针,而不是那个对象吧.在我们使用javac指令没有…
很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.我说过JVM的自身技术限制了Java企业级应用的伸缩性.首先我们先列举一些主导因素. 主流的硬件服务器提供了大量的内存 分布式系统有大量内存的需求,而且该需求在持续增长 一个普通Java应用程序所持有的对空间大概在1GB~4GB,这远远低于一个硬件服务器的内存管理能力以及一个分布式应用程序的内存需求量.这被称之为Java内存墙,如下图所示(图中表述Ja…
java.math.Math类常用的常量和方法: Math.PI 记录的圆周率 Math.E记录e的常量 Math.abs 求绝对值 Math.sin 正弦函数 Math.asin 反正弦函数 Math.cos 余弦函数 Math.acos 反余弦函数 Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数 Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度 Math.ceil 得到不小于某数的最大整数 Math.…
这是最后我们对trackr系列的一部分.在过去的两的博文中,我们已经向您展示我们使用的工具和框架构建后端和前端.如果你错过了前面的帖子现在你可能会想读他们赶上来. Part I – The Backend Part II – The Frontend 在本帖里,我们将强调整个开发过程并给出一些见解对我们使用的工具. Development Process 我们使用Confluence来outline我们的需求,这是一个超屌的工具,广泛的规范,它还增加了协作功能.所以每个人都可以看到和评论的需求,…
Java精确计算 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100); } } 你没有看错!结果确实是 0.060000000000000005 0…
Java Java double:浮点数:精确计算  public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.println(4.015*100);        System.out.println(123.3/100);    }};你没有看…