String->double的转换问题

xujianfu 2005-10-26 09:50:58
我现在有一个String型的数据a=120.25473154602059
要将它转换成double型的怎么转换?
使用Double.parseDouble(a);会得到
120.2547315460206 怎么办?????
...全文
6976 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
Croatia 2005-10-31
  • 打赏
  • 举报
回复
To:windindance(风舞轻扬·白首为功名)

>>BigDecimal的算法也有限。不一定可以满足所有的人的要求。
有什么算法不能实现,可以提出来,看看能不能实现。
---------------------------------
java.lang.Math里面的对数,指数等等。只是随便举了例子。


总比double类型精度达不到好。
---------------------------------
对,是总比达不到的好。赫赫。不过,看怎么看待这个问题了。有什么样的具体需求,等等。

pigo 2005-10-27
  • 打赏
  • 举报
回复
如果你实在很懒的话,就给Class加上 strictfp 修饰:


http://www.google.com/search?q=strictfp&hl=zh-CN&lr=lang_zh-CN&ie=gb2312
windindance 2005-10-27
  • 打赏
  • 举报
回复
>>BigDecimal的算法也有限。不一定可以满足所有的人的要求。
有什么算法不能实现,可以提出来,看看能不能实现。

总比double类型精度达不到好。
Croatia 2005-10-27
  • 打赏
  • 举报
回复
To:windindance(风舞轻扬) ( )

不能转换为double后计算,应使用BigDecimal 的计算函数。
————————————————————————
不能转换成double,我知道。一转换精度就不对了。
但是,BigDecimal的算法也有限。不一定可以满足所有的人的要求。
leekooqi 2005-10-27
  • 打赏
  • 举报
回复
String a="120.2547315460205909813";
System.out.println((new BigDecimal(a)).toString());
Mark_Chen 2005-10-27
  • 打赏
  • 举报
回复
String a="120.2547315460205909813";
BigDecimal c=new BigDecimal(a);
System.out.println(c.toString());
teddywtd 2005-10-27
  • 打赏
  • 举报
回复
String a="120.2547315460205909813";
BigDecimal c=new BigDecimal(a);
System.out.println(c);
pauliuyou 2005-10-27
  • 打赏
  • 举报
回复
学习.
yzr520 2005-10-27
  • 打赏
  • 举报
回复
说的都有道理啊 。不我我自己认为什么转也回丢失精度。
laxxx6 2005-10-26
  • 打赏
  • 举报
回复
是精度的问题,,,最好在字符串的时候就加个PAN断的过程,,以适应要转型的精度...
yyouyou 2005-10-26
  • 打赏
  • 举报
回复
使用java.math.BigDecimal类
yanxiazhiqiu 2005-10-26
  • 打赏
  • 举报
回复
学习了。

learning~~
windindance 2005-10-26
  • 打赏
  • 举报
回复
>>BigDecimal 只是让他显示对了,他用来计算以后,就会出错的。
不能转换为double后计算,应使用BigDecimal 的计算函数。
lcllcl987 2005-10-26
  • 打赏
  • 举报
回复
学习
Croatia 2005-10-26
  • 打赏
  • 举报
回复
BigDecimal 只是让他显示对了,他用来计算以后,就会出错的。

这个是Double的精度决定的。
Croatia 2005-10-26
  • 打赏
  • 举报
回复
说错了,是精度是15位。
Croatia 2005-10-26
  • 打赏
  • 举报
回复
这个和double的类型范围有关系,

double只能有15位,包括小数点以后的数字。

所以,用什么构造都一样的。
cjhyahoo 2005-10-26
  • 打赏
  • 举报
回复
String a="120.2547315460205909813";
BigDecimal c=new BigDecimal(a);
System.out.println(c.toString());
windindance 2005-10-26
  • 打赏
  • 举报
回复
>>System.out.println(c.doubleValue());
这个结果当然是错误的,因为相当于把数据又转回double类型,造成精度丢失。

String a="120.2547315460205909813";
BigDecimal c=new BigDecimal(a);
System.out.println(c.toString());
可以看到,结果是正确的数据。
yanxiazhiqiu 2005-10-26
  • 打赏
  • 举报
回复
String a="120.2547315460205909813";
BigDecimal c=new BigDecimal(a);
System.out.println(c.doubleValue());

这样结果一样的。关注下,hehe ~~
加载更多回复(11)

62,614

社区成员

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

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