黑马程序员技术交流社区

标题: 集思广益啦!!!欢迎大家来畅所欲言 [打印本页]

作者: 张红(新)    时间: 2015-7-29 14:05
标题: 集思广益啦!!!欢迎大家来畅所欲言
有没有知道怎么样将一个double类型的数据,以“.”点进行分割成两部分的方式?
作者: wode1311    时间: 2015-7-29 16:06
             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]);
             }
作者: 黑进制    时间: 2015-7-29 16:11
好高深的问题
作者: 张红(新)    时间: 2015-7-29 17:10
wode1311 发表于 2015-7-29 16:06
double d=12.443;
              String []s1=String.valueOf(d).split("\\.");   //将double ...

这样不行的,Double值会在计算机中以科学计数法保存的
作者: wode1311    时间: 2015-7-29 17:18
本帖最后由 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 参数的字符串表示形式。

作者: 张红(新)    时间: 2015-7-29 17:31
wode1311 发表于 2015-7-29 17:18
public static String valueOf(double d)返回 double 参数的字符串表示形式。
该表示形式恰好是单参数的 ...

你举的数据太小了 如果d=101000001010.123
结果就是:
1
01000001010123E11

作者: wode1311    时间: 2015-7-29 18:04
确实如此,你可以使用BigDecimal类来解决这个问题,不过可能会导致小数点后的数字出现偏差。
作者: wode1311    时间: 2015-7-29 18:08
String []s1=new BigDecimal(d).toString().split("\\.");   
作者: 张红(新)    时间: 2015-7-30 14:15
wode1311 发表于 2015-7-29 18:08
String []s1=new BigDecimal(d).toString().split("\\.");

这个类不会,我找到了别的方法完成功能,谢谢你啊
作者: wode1311    时间: 2015-7-30 22:09
什么方法?分享一下吧。。。
作者: 清风惜月    时间: 2015-7-30 23:30
签个到,看看吧
作者: 张红(新)    时间: 2015-8-1 00:51
wode1311 发表于 2015-7-30 22:09
什么方法?分享一下吧。。。

就是换种思路,把double类型数据先乘100,变成字符串形式,再获取子串的方式分割整数和小数部分
作者: zhaoyue    时间: 2015-8-1 10:25
刚学到这里,有大神解答。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2