java开发_double精度丢失的问题总结

在博问上面看到这样的一个问题:

这样的问题是java(或C#)中的double的精度丢失的问题。

如下面的运行结果:

=============================================================

下面是解决方法

=============================================================

代码部分:

DecimalFormat的几种用法 :http://blog.sina.com.cn/s/blog_4fcb75bd01008bz7.html

 1 /**
 2  * 
 3  */
 4 package com.b510;
 5 
 6 import java.text.DecimalFormat;
 7 
 8 /**
 9  * @date 2012-11-22
10  * @author hongten
11  * 
12  */
13 public class TTTT {
14     public static void main(String[] args) {
15         javaDouble57();
16         javaDouble58();
17     }
18 
19     /**
20      * double中的57
21      */
22     public static void javaDouble57() {
23         double number = 0.57;
24         double doubleResult = number * 100;
25 
26         DecimalFormat df1 = new DecimalFormat("###0");
27         String parValue = df1.format(doubleResult);
28         int result = Integer.valueOf(parValue);
29         System.out.println(result);
30         // 精度丢失
31         System.out.println(number * 100);
32     }
33 
34     /**
35      * double中的58
36      */
37     public static void javaDouble58() {
38         double number = 0.58;
39         double doubleResult = number * 100;
40 
41         DecimalFormat df1 = new DecimalFormat("###0");
42         String parValue = df1.format(doubleResult);
43         int result = Integer.valueOf(parValue);
44         System.out.println(result);
45         // 精度丢失
46         System.out.println(number * 100);
47     }
48 }

运行结果:

这个问题:为什么只有57,58会这样,而其他如:55,56,59却没有这样的情况? 
现在我没有解决,如果有朋友知道的,请和大家分享一下....
posted @ 2012-11-22 11:11  Hongten  阅读(10840)  评论(1编辑  收藏  举报
Fork me on GitHub