读书人

怎么使double类型的数字原样输出?(这个

发布时间: 2011-12-04 22:58:58 作者: rapoo

如何使double类型的数字原样输出?(这个问题不简单)
double类型数字 "26431297.512 "输出时会变为 "2.6431297512E7 ",现在我想照原样输出为 "26431297.512 "。
具体要求如下所示:
26431297.51287 --> "26431297.51287 "
0.000067 --> "0.000067 "
3.3 --> "3.3 "
其中的小数位数是动态的。
写一个方法实现:public String double2String(double d){ }
分不够再加。




[解决办法]
public class Test {
public static String doubleToString(double d) {
String s = "00000000000000000000000000000000000000000000000000000000000000000000000000 ";
java.text.DecimalFormat df = new java.text.DecimalFormat(s + ". " + s);
s = df.format(d);
s = s.replaceAll( "(? <=^\\-?)0+(?=0\\.)|(? <=^\\-?)0+|\\.0+$ ", " ");
if (s.indexOf( ". ") != -1)
s = s.replaceAll( "0+$ ", " ");
return s;
}

public static void main(String[] args) {
double d = 26431297.512;
System.out.println(Test.doubleToString(d));
d = 34500.0;
System.out.println(Test.doubleToString(d));
d = 0.000067;
System.out.println(Test.doubleToString(d));
d = 3.3;
System.out.println(Test.doubleToString(d));
d = 0;
System.out.println(Test.doubleToString(d));
d = -8;
System.out.println(Test.doubleToString(d));
d = -000800.023000;
System.out.println(Test.doubleToString(d));
d = 0030.20100;
System.out.println(Test.doubleToString(d));
}

}


我是新手,之前也遇过这问题,就用这么个笨方法.

[解决办法]
public static String doubleToString(double d) {
  String str = String.format( "%.100f ", d);
  str = str.replaceAll( "(\\.)?0+$ ", " ");
  return str;
}
[解决办法]
裤衩多了就是牛
[解决办法]
double a = 26431297.51287;

DecimalFormat df = new DecimalFormat( "###########.########## ");
System.out.println(df.format(a));
[解决办法]
高手
[解决办法]
可以做格式化也可以偷懒啊 生成一个Double对象 然后再toString()
[解决办法]
只是问一下,
这个问题关系到那些基础知识
遇到应该从何处下手
[解决办法]
up
[解决办法]
有想JVAVA共同学习的和交流的请加QQ群:29252269
[解决办法]
学习
[解决办法]
double d=4;
System.out.print(d);

这样不就可以了吗?你看看这个方法,可以直接输出DOUBLE类型的呀。。。

[解决办法]
数据库里为啥不设计成BigDecimal的呢。。。

读书人网 >J2SE开发

热点推荐