A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有没有知道怎么样将一个double类型的数据,以“.”点进行分割成两部分的方式?

12 个回复

倒序浏览
             double d=12.443;
              String []s1=String.valueOf(d).split("\\.");   //将double类型转换成String类型后,通过“ .” 拆分字符串
             for(int i=0;i<s1.length;i++){
                    System.out.println(s1[i]);
             }
回复 使用道具 举报
好高深的问题
回复 使用道具 举报
wode1311 发表于 2015-7-29 16:06
double d=12.443;
              String []s1=String.valueOf(d).split("\\.");   //将double ...

这样不行的,Double值会在计算机中以科学计数法保存的
回复 使用道具 举报
本帖最后由 wode1311 于 2015-7-29 17:19 编辑
张红(新) 发表于 2015-7-29 17:10
这样不行的,Double值会在计算机中以科学计数法保存的


public static String valueOf(double d)返回 double 参数的字符串表示形式。
该表示形式恰好是单参数的 Double.toString 方法返回的结果。

public static String valueOf(double d)
参数:
d - 一个 double。
返回:
double 参数的字符串表示形式。
回复 使用道具 举报
wode1311 发表于 2015-7-29 17:18
public static String valueOf(double d)返回 double 参数的字符串表示形式。
该表示形式恰好是单参数的 ...

你举的数据太小了 如果d=101000001010.123
结果就是:
1
01000001010123E11
回复 使用道具 举报
确实如此,你可以使用BigDecimal类来解决这个问题,不过可能会导致小数点后的数字出现偏差。
回复 使用道具 举报
String []s1=new BigDecimal(d).toString().split("\\.");   
回复 使用道具 举报
wode1311 发表于 2015-7-29 18:08
String []s1=new BigDecimal(d).toString().split("\\.");

这个类不会,我找到了别的方法完成功能,谢谢你啊
回复 使用道具 举报
什么方法?分享一下吧。。。
回复 使用道具 举报
签个到,看看吧
回复 使用道具 举报
wode1311 发表于 2015-7-30 22:09
什么方法?分享一下吧。。。

就是换种思路,把double类型数据先乘100,变成字符串形式,再获取子串的方式分割整数和小数部分
回复 使用道具 举报
刚学到这里,有大神解答。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马