System.out.println(new BigDecimal(253.90).doubleValue() * 100);
25390.0
精度正确

System.out.println(new BigDecimal(255.90).doubleValue() * 100);
25590.0
精度正确

System.out.println(new BigDecimal(256.10).doubleValue() * 100);
25610.000000000004
精度错误

System.out.println(new BigDecimal(256.80).doubleValue() * 100);
25680.0
精度正确

System.out.println(new BigDecimal(256.90).doubleValue() * 100);
25689.999999999996
精度错误

System.out.println(new BigDecimal(273.90).doubleValue() * 100);
27389.999999999996
精度错误

结论,整数部分小于等于255时,小数部分精度正常;
大于255时,如果小数是.10则精度部分会偏大;
大于255时,如果小数是.90则精度部分会偏小,其他情况精度正确;

System.out.println(256.90 * 100);
25689.999999999996
此问题和BigDecimal没有关系,float和double计算都会有这个问题

所以金额相关的计算一定要用BigDecimal进行运算,再取结果

float和double精度问题的更多相关文章

  1. java float、double精度研究(转)

    在java中运行一下代码System.out.println(2.00-1.10);输出的结果是:0.8999999999999999很奇怪,并不是我们想要的值0.9 再运行如下代码:System.o ...

  2. 【转】JAVA程序中Float和Double精度丢失问题

    原文网址:http://blog.sina.com.cn/s/blog_827d041701017ctm.html 问题提出:12.0f-11.9f=0.10000038,"减不尽" ...

  3. float和double的精度

    作者: jillzhang 联系方式:jillzhang@126.com 原网址:http://blog.csdn.net/wuna66320/article/details/1691734 1 范围 ...

  4. float,double和decimal的精度问题

    先标注一个音标,因为我老是读错:decimal ['desɪml] 精度对比: 类型 CTS 类型 描述 有效数字 范围 float System.Single 32-bit single-preci ...

  5. float与double的范围和精度(摘录)

    什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置. ...

  6. float与double的精度和范围

    1 范围 float和double的范围是由指数的位数来决定的. float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bi ...

  7. java float double精度为什么会丢失?浅谈java的浮点数精度问题 【转】

    由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static vo ...

  8. 浮点型 float和double类型的内存结构和精度问题

    首先引用一个例子在java中可能你会遇到这样的问题: 例:0.99999999f==1f //true 0.9999999f==1f //false 这是超出精度造成的,为了知道为什么会造成这样的问题 ...

  9. float与double的范围和精度以及大小非零比较

    1. 范围  float和double的范围是由指数的位数来决定的.  float的指数位有8位,而double的指数位有11位,分布如下:  float:  1bit(符号位) 8bits(指数位) ...

随机推荐

  1. 杭电ACM1004

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  2. 第3.2 使用案例1:股票期货stock portfolio 21050917

    As mentioned earlier in the chapter, the first use case revolves around a stock portfolio use case  ...

  3. unslider.js 实现移动web轮播

    unslider.js可以实现轮播,但是在移动端还需要另两个插件. jquery.event.move和jQuery.event.swipe : 下面就是简单的实例: <!doctype htm ...

  4. IOS线程学习(一)

    1.NSThread  官方的描述 An NSThread object controls a thread of execution. Use this class when you want to ...

  5. PHP 单引号 与双引号区别

    在PHP中,字符串的定义可以使用单引号,也可以使用双引号. PHP允许我们在双引号串中直接包含字串变量,双引号串中的变量将被解释而且替换,而单引号串中的内容总被认为是普通字符.例如: $foo = 2 ...

  6. C语言程序设计第12次作业

    一.本次课主要内容: 本章主要介绍指针相关的基础知识,本节课的主要如下 (1)通过示例"电码加密"引入字符指针与字符串处理.首先重点介绍字符指针和字符串的关联和区别,然后对常用字符 ...

  7. mozilla firefox 安装flash player

    下载 flash player http://get.adobe.com/cn/flashplayer/ for linux  .tar.gz文件 install_flash_player_11_li ...

  8. SpringMVC之入门

    Spring MVC简介 Spring MVC:Spring MVC也叫Spring Web MVC,属于表现层框架,是Spring中的一份子. Spring MVC执行流程图 第一个SpringMV ...

  9. Caused by: java.lang.NoClassDefFoundError:

    tomcat启动不了 报错信息头如下: Caused by: java.lang.NoClassDefFoundError: at java.lang.Class.getDeclaredMethods ...

  10. Unity3D教程:茄子童萌會

    http://s.epb.idv.tw/han-shi-ku/unity Unity 0000 Unity3D學習之路 - C#學習筆記(一) 0001 Unity3D學習之路 - C#學習筆記(二) ...