当前位置:  技术问答>java相关

非常怪异的double相加,难道这是Sun java的一个bug?但愿不是,谁知道,这200分就给您了

    来源: 互联网  发布时间:2015-03-18

    本文导语:  public class Test {   public Test() {   }   public static void main(String[] args) {     Test test1 = new Test();     double value=0.01;     double valueT=0.01;     for(int i=0;i 0.01|||0.02 0.01|||0.03 0.01|||0.04 0.01|||0.05 0.01|||0.060000000...

public class Test {

  public Test() {
  }
  public static void main(String[] args) {
    Test test1 = new Test();
    double value=0.01;
    double valueT=0.01;
    for(int i=0;i
0.01|||0.02
0.01|||0.03
0.01|||0.04
0.01|||0.05
0.01|||0.060000000000000005
0.01|||0.07
0.01|||0.08
0.01|||0.09
0.01|||0.09999999999999999
0.01|||0.10999999999999999
0.01|||0.11999999999999998
0.01|||0.12999999999999998
0.01|||0.13999999999999999
0.01|||0.15
0.01|||0.16
0.01|||0.17
0.01|||0.18000000000000002
0.01|||0.19000000000000003
0.01|||0.20000000000000004
0.01|||0.21000000000000005
哪儿来的那么多位小数呢?郁闷。。

|
以前有人问过 了,浮点数运算是这样的。

|
受精度限制,只能是这样。不光是java,其他语言也是同样。

|
这不是Bug,这和double类型数据的存放方式有关(float类型也是如此)。

|
浮点数运算的必然结果

高精度要求可使用类 java.math.BigDecimal

|
这跟 Java 没什么关系, Fortran, C 等都是这样的

quoted from Java Language Specification:

Operators on floating-point numbers behave as specified by IEEE 754 (with the exception of the remainder operator (§15.17.3)). In particular, the Java programming language requires support of IEEE 754 denormalized floating-point numbers and gradual underflow, which make it easier to prove desirable properties of particular numerical algorithms. Floating-point operations do not "flush to zero" if the calculated result is a denormalized number.

IEEE standard 754
for 
binary floating-point arithmetic:

http://cch.loria.fr/documentation/IEEE754/

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt.geom类line2d.double的类成员方法: line2d.double定义及介绍
  • java读文件,比如有文件中有8个字节是double型,怎么它读出来,也转为double
  • java命名空间java.awt.geom类quadcurve2d.double的类成员方法: quadcurve2d.double定义及介绍
  • java中int, double 转化成String, String转化成double,怎么做?请给个例子.
  • java命名空间java.awt.geom类arc2d.double的类成员方法: arc2d.double定义及介绍
  • 请教如何设置Double 的格式?double = 10.66666667,如何取得小数点后2 位的数值?
  • java命名空间java.awt.geom类ellipse2d.double的类成员方法: ellipse2d.double定义及介绍
  • 如何比较两个数的大小,并按从小到大的次序输出。如:double d1=23.4;double d2=35.1;
  • java命名空间java.awt.geom类path2d.double的类成员方法: path2d.double定义及介绍
  • double in_sum=double.parseDouble(in_sum1);有错?
  • java命名空间java.awt.geom类rectangle2d.double的类成员方法: rectangle2d.double定义及介绍
  • 怎么样将String转换成double?
  • java命名空间java.awt.geom类point2d.double的类成员方法: point2d.double定义及介绍
  • 如何將一個String 類型的變量轉換成 double類型.
  • java命名空间java.awt.geom类roundrectangle2d.double的类成员方法: roundrectangle2d.double定义及介绍
  • java中的Double类
  • java命名空间java.awt.geom类cubiccurve2d.double的类成员方法: cubiccurve2d.double定义及介绍
  • 关于将字符串转换为DOUBLE类型????????????????????在线等待!!!!!!
  • java命名空间java.lang类double的类成员方法: double定义及介绍
  • 帮个忙!如何取double类小数的前几位?或者进行四舍五入?
  • java命名空间java.lang类double的类成员方法: valueof定义及介绍
  • 关于double类型为null的问题。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3