CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

String->double的转换问题

楼主xujianfu(吞下一把钉子)2005-10-26 09:50:58 在 Java / J2SE / 基础类 提问

我现在有一个String型的数据a=120.25473154602059  
  要将它转换成double型的怎么转换?  
  使用Double.parseDouble(a);会得到  
  120.2547315460206       怎么办????? 问题点数:50、回复次数:33Top

1 楼windindance(风舞轻扬·白首为功名)回复于 2005-10-26 09:57:57 得分 2

精度问题。使用BigDecimal类Top

2 楼yanxiazhiqiu(if the words don't come my way...)回复于 2005-10-26 09:59:53 得分 1

小数点后边只能是这些位了吧?Top

3 楼chenyulin(chen)回复于 2005-10-26 09:59:56 得分 5

怎么没人回答?帮你顶一下Top

4 楼yanxiazhiqiu(if the words don't come my way...)回复于 2005-10-26 10:13:27 得分 2

String   a="120.2547315460205909813";  
                  BigDecimal   c=new   BigDecimal(a);  
                  System.out.println(c.doubleValue());  
   
  这样结果一样的。关注下,hehe     ~~Top

5 楼windindance(风舞轻扬·白首为功名)回复于 2005-10-26 10:34:41 得分 2

>>System.out.println(c.doubleValue());  
  这个结果当然是错误的,因为相当于把数据又转回double类型,造成精度丢失。  
   
    String   a="120.2547315460205909813";  
    BigDecimal   c=new   BigDecimal(a);  
    System.out.println(c.toString());  
  可以看到,结果是正确的数据。Top

6 楼cjhyahoo(野虎)回复于 2005-10-26 10:36:56 得分 2

String   a="120.2547315460205909813";  
    BigDecimal   c=new   BigDecimal(a);  
    System.out.println(c.toString());  
  Top

7 楼Croatia(Croatia)回复于 2005-10-26 10:38:15 得分 2

这个和double的类型范围有关系,  
   
  double只能有15位,包括小数点以后的数字。  
   
  所以,用什么构造都一样的。Top

8 楼Croatia(Croatia)回复于 2005-10-26 10:39:01 得分 1

说错了,是精度是15位。Top

9 楼Croatia(Croatia)回复于 2005-10-26 10:47:55 得分 1

BigDecimal   只是让他显示对了,他用来计算以后,就会出错的。  
   
  这个是Double的精度决定的。Top

10 楼lcllcl987(毛爷爷)回复于 2005-10-26 11:31:00 得分 1

学习Top

11 楼windindance(风舞轻扬·白首为功名)回复于 2005-10-26 11:48:28 得分 2

>>BigDecimal   只是让他显示对了,他用来计算以后,就会出错的。  
  不能转换为double后计算,应使用BigDecimal   的计算函数。Top

12 楼yanxiazhiqiu(if the words don't come my way...)回复于 2005-10-26 12:19:43 得分 1

学习了。  
   
  learning~~Top

13 楼yyouyou(一塌)回复于 2005-10-26 12:24:23 得分 1

使用java.math.BigDecimal类Top

14 楼laxxx6(laxxx3)回复于 2005-10-26 12:34:59 得分 1

是精度的问题,,,最好在字符串的时候就加个PAN断的过程,,以适应要转型的精度...Top

15 楼lcllcl987(毛爷爷)回复于 2005-10-26 14:27:35 得分 4

BigDecimal有自己的算术方法:  
  例如求120.2547315460205909813   +   0.02的和  
   
  import   java.math.BigDecimal;  
   
  public   class   BigDecimalTest   {  
   
  public   static   void   main(String[]   args)   {  
    String   a="120.2547315460205909813";  
    BigDecimal   c=new   BigDecimal(a);  
    c   =   c.add(new   BigDecimal("0.02"));  
    System.out.println(c.toString());  
  }  
  }Top

16 楼dl007(dl007)回复于 2005-10-26 15:44:21 得分 1

上面给你讲的很清楚,bigdecimal转换又没有精度问题,很好  
  Top

17 楼boyu_song(我这样会不会遭天谴,我只是想看看这个论坛的ID最大可以多大?)回复于 2005-10-26 16:07:12 得分 1

double   b=120.000000000000001;  
  System.out.println(b);  
  这样都不可以,楼主,明白没?Top

18 楼boyu_song(我这样会不会遭天谴,我只是想看看这个论坛的ID最大可以多大?)回复于 2005-10-26 16:10:33 得分 1

或者你可以考虑一下用算法来解决,把你的String分解成两个,用的时候再分两次转。Top

19 楼wizardblue()回复于 2005-10-26 16:15:05 得分 1

楼主我想问你,你转成double想干嘛,?double本来就是这样子的!!!  
  Top

20 楼ianok(再菜我也要up出個星來)回复于 2005-10-26 17:20:38 得分 1

upTop

21 楼kingdom_seu()回复于 2005-10-26 17:33:18 得分 1

learning!!~~~~~~~Top

22 楼bixuehui(边疆)回复于 2005-10-26 17:44:25 得分 1

upTop

23 楼Croatia(Croatia)回复于 2005-10-27 10:14:02 得分 2

To:windindance(风舞轻扬)   (   )    
   
  不能转换为double后计算,应使用BigDecimal   的计算函数。  
  ————————————————————————  
  不能转换成double,我知道。一转换精度就不对了。  
  但是,BigDecimal的算法也有限。不一定可以满足所有的人的要求。Top

24 楼windindance(风舞轻扬·白首为功名)回复于 2005-10-27 10:17:43 得分 1

>>BigDecimal的算法也有限。不一定可以满足所有的人的要求。  
  有什么算法不能实现,可以提出来,看看能不能实现。  
   
  总比double类型精度达不到好。Top

25 楼pigo()回复于 2005-10-27 10:48:28 得分 2

如果你实在很懒的话,就给Class加上   strictfp   修饰:  
   
   
  http://www.google.com/search?q=strictfp&hl=zh-CN&lr=lang_zh-CN&ie=gb2312  
  Top

26 楼yzr520()回复于 2005-10-27 15:36:59 得分 1

说的都有道理啊   。不我我自己认为什么转也回丢失精度。Top

27 楼pauliuyou(paul)回复于 2005-10-27 16:01:48 得分 1

学习.Top

28 楼wtd(浪花)回复于 2005-10-27 16:37:58 得分 2

String   a="120.2547315460205909813";  
                  BigDecimal   c=new   BigDecimal(a);  
                  System.out.println(c);Top

29 楼nixiangtama(中国IT人才网(www.itbbs.net.cn))回复于 2005-10-27 16:56:48 得分 0

我顶!  
   
   
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
  免费招聘、求职。IT人工作的天堂。希望能够为大家所用。Top

30 楼nixiangtama(中国IT人才网(www.itbbs.net.cn))回复于 2005-10-27 17:00:50 得分 0

我顶!  
   
   
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
   
  中国IT人才网(         http://www.itbbs.net.cn         )!  
  免费招聘、求职。IT人工作的天堂。希望能够为大家所用。Top

31 楼Mark_Chen(雨枫)回复于 2005-10-27 18:10:29 得分 2

String   a="120.2547315460205909813";  
    BigDecimal   c=new   BigDecimal(a);  
    System.out.println(c.toString());  
  Top

32 楼nationally(自由鸟)回复于 2005-10-27 19:41:46 得分 2

String   a="120.2547315460205909813";  
    System.out.println((new   BigDecimal(a)).toString());  
  Top

33 楼Croatia(Croatia)回复于 2005-10-31 10:43:59 得分 2

To:windindance(风舞轻扬·白首为功名)    
   
  >>BigDecimal的算法也有限。不一定可以满足所有的人的要求。  
  有什么算法不能实现,可以提出来,看看能不能实现。  
  ---------------------------------  
  java.lang.Math里面的对数,指数等等。只是随便举了例子。  
   
   
  总比double类型精度达不到好。  
  ---------------------------------  
  对,是总比达不到的好。赫赫。不过,看怎么看待这个问题了。有什么样的具体需求,等等。  
   
  Top

相关问题

  • 谁能把 Double 类型转换成 String?
  • 怎么样将String转换成double?
  • String 转换 java.util.Date
  • C#中string转换成double的方法是什么?help!
  • 一个简单的问题:如何将string转换为double?
  • 50分求教,在JSP里如何将String转换成Double
  • 有关 real or double 型转换成 string 型问题
  • double型数据如何转换成String型?
  • 如何将double类型 强制转换为 string ?
  • 如何将double型数据转换成String型?

关键词

  • .net
  • it人才
  • 转换
  • 算法
  • 中国
  • 数据
  • 学习
  • 有限
  • itbbs
  • bigdecimal

得分解答快速导航

  • 帖主:xujianfu
  • windindance
  • yanxiazhiqiu
  • chenyulin
  • yanxiazhiqiu
  • windindance
  • cjhyahoo
  • Croatia
  • Croatia
  • Croatia
  • lcllcl987
  • windindance
  • yanxiazhiqiu
  • yyouyou
  • laxxx6
  • lcllcl987
  • dl007
  • boyu_song
  • boyu_song
  • wizardblue
  • ianok
  • kingdom_seu
  • bixuehui
  • Croatia
  • windindance
  • pigo
  • yzr520
  • pauliuyou
  • wtd
  • Mark_Chen
  • nationally
  • Croatia

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo