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却没有这样的情况?
现在我没有解决,如果有朋友知道的,请和大家分享一下....