double类型如何正确的转换为字符串类型?

supersuyogi 2006-03-21 05:31:36
double d = 0.0001;
String s1 = String.valueOf(d);//结果为"1.0E-4"
String s2 = new BigDecimal(d).toString();//结果为"1.00000000000xxxxxxxxxxxxx"
....
不能使用格式化方法,因为不能确定double类型的精度.
我试过很多方法都不能得到正确的结果"0.0001".
谁能给个正确的方法呀?
...全文
768 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bgceft 2006-03-23
  • 打赏
  • 举报
回复
double d = 0.0001d;
DecimalFormat dft = new DecimalFormat("xxx,xxx.xxxxxxx");
value = dft.format(d);
System.out.println(value);
bitou 2006-03-23
  • 打赏
  • 举报
回复

double d = 0.0001d;
DecimalFormat format = new DecimalFormat("###,###.#######");
value = format.format(d);
System.out.println(value);

结果输出:
0.0001
yuzl32 2006-03-21
  • 打赏
  • 举报
回复
解决实际问题不能拘束于一个方法啊,LZ
supersuyogi 2006-03-21
  • 打赏
  • 举报
回复
对,就是因为double是近似值,才会有这个问题.
0.1无论怎么转换都能得到正确的结果;而0.0001为什么就没有办法得到正确的结果呢?
如果不能得到正确结果,那java的double类型还能用吗?
treeroot 2006-03-21
  • 打赏
  • 举报
回复
本来double都是近似值,哪里来的正确值
0.1-0.9 这9个值只有0.5是精确表示的,其他的都是近似值
supersuyogi 2006-03-21
  • 打赏
  • 举报
回复
说了不能用格式化方法的,d可以是任何double类型的值,都要得到正确的结果
treeroot 2006-03-21
  • 打赏
  • 举报
回复
new DecimalFormat(".####").format(0.001l)


ici

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧