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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵崇友 中级黑马   /  2013-5-17 09:46  /  2308 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵崇友 于 2013-5-19 08:06 编辑

昨天做题,遇到一个小问题,要将Double类型的整数部分和小数部分分开,整数部分没有问题,到小数部分就卡壳了。。求大神帮帮忙,如何才能准备获得小数部分的值呢?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

17 个回复

倒序浏览
占个楼先。思路:把数据转换成字符串,然后分割,再分别获得整数和小数部分。代码:

public class Main {

        /**
         * @param args
         */
        public static void main(String[] args) {
                double d=1.23456;
                String str=Double.toString(d);//将double转换成字串,好进行分割
                System.out.println(str);
                String[] tmp=str.split("\\.");//分割字符,注意点号是转义字符,需要+\\
                System.out.println(tmp[0]+"---"+tmp[1]);
               
                int zhengshu=new Integer(tmp[0]);
                int xiaoshu=new Integer(tmp[1]);
                System.out.println("整数-"+zhengshu+"小数-"+xiaoshu);

        }

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
class  StaticTest
{
public static void main(String[] args)
{
  //定义一个double类型的值
  double dd = 123.45;
  String d = dd + "";
  //用substring(beginIndex,endIndex)返回一个新字符串,它是此字符串的一个子字符串。result就是小数部分
  String result = d.substring(d.indexOf('.') + 1, d.length());
  System.out.println(result);
}
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
kaka小明 发表于 2013-5-17 10:10
占个楼先。思路:把数据转换成字符串,然后分割,再分别获得整数和小数部分。代码:

public class Main {

你写的有bug啊,当double值很大的时候,就不能用了!!!
回复 使用道具 举报
小石头39910 发表于 2013-5-17 10:11
class  StaticTest
{
public static void main(String[] args)

只适合一般的情况,你测试下当double很大的情况。。
回复 使用道具 举报
数据很大的时候,为什么转换成的字串会是科学计数形式呢?1.225234323456E7
回复 使用道具 举报
没人回帖吗????
回复 使用道具 举报
=大神解答
回复 使用道具 举报
又是一天,没人给答案吗?有老师在吗
回复 使用道具 举报
一楼不是回帖了么?

思路:把double型数据转换成字符串来做
         然后以为小数点分割。

如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
殇_心。 发表于 2013-5-18 21:17
一楼不是回帖了么?

思路:把double型数据转换成字符串来做

这个方法不可行。。。只适合一般情况!!!!当double值很大时就不行了,看五楼!!
回复 使用道具 举报
赵崇友 发表于 2013-5-18 21:29
这个方法不可行。。。只适合一般情况!!!!当double值很大时就不行了,看五楼!! ...

BigDecima   你去查查api文档。。 处理大数的
回复 使用道具 举报
Double d = 123.456;
int x = (int)d;  //结果是123吧
double y = d - x;   //即123.456 - 123 = 0.456
楼主问的不就是这么个问题吗?还是我的理解有误?
回复 使用道具 举报
cowthan 发表于 2013-5-18 23:25
Double d = 123.456;
int x = (int)d;  //结果是123吧
double y = d - x;   //即123.456 - 123 = 0.456

你没理解错,只是你给的方法健壮性不高,只适合一般的情况。。
回复 使用道具 举报
cowthan 发表于 2013-5-18 23:25
Double d = 123.456;
int x = (int)d;  //结果是123吧
double y = d - x;   //即123.456 - 123 = 0.456

我本来也是这么处理的,比如:123.02,你看这个方法还行不
回复 使用道具 举报
殇_心。 发表于 2013-5-18 21:56
BigDecima   你去查查api文档。。 处理大数的

貌似这个可以用,谢谢了!!!还是要伤心出马啊:lol
回复 使用道具 举报
赵崇友 发表于 2013-5-19 07:45
貌似这个可以用,谢谢了!!!还是要伤心出马啊

把自己的问题解决了才是王道。
老赵你的求知欲不错```!!!
回复 使用道具 举报
殇_心。 发表于 2013-5-19 11:22
把自己的问题解决了才是王道。
老赵你的求知欲不错```!!!

老师说的,不懂就要问!!:#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马