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卻沒有這樣的情況? 
現在我沒有解決,如果有朋友知道的,請和大家分享一下....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM