黑马程序员技术交流社区

标题: 如何获得Double类型小数部分的准备值? [打印本页]

作者: 赵崇友    时间: 2013-5-17 09:46
标题: 如何获得Double类型小数部分的准备值?
本帖最后由 赵崇友 于 2013-5-19 08:06 编辑

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

作者: kaka小明    时间: 2013-5-17 10:10
占个楼先。思路:把数据转换成字符串,然后分割,再分别获得整数和小数部分。代码:

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);

        }

作者: 小石头39910    时间: 2013-5-17 10:11
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);
}
}
作者: 赵崇友    时间: 2013-5-17 10:33
kaka小明 发表于 2013-5-17 10:10
占个楼先。思路:把数据转换成字符串,然后分割,再分别获得整数和小数部分。代码:

public class Main {

你写的有bug啊,当double值很大的时候,就不能用了!!!
作者: 赵崇友    时间: 2013-5-17 10:35
小石头39910 发表于 2013-5-17 10:11
class  StaticTest
{
public static void main(String[] args)

只适合一般的情况,你测试下当double很大的情况。。
作者: kaka小明    时间: 2013-5-17 11:11
数据很大的时候,为什么转换成的字串会是科学计数形式呢?1.225234323456E7
作者: 赵崇友    时间: 2013-5-17 21:51
没人回帖吗????
作者: kaka小明    时间: 2013-5-18 00:01
=大神解答
作者: 赵崇友    时间: 2013-5-18 18:58
又是一天,没人给答案吗?有老师在吗
作者: 殇_心。    时间: 2013-5-18 21:17
一楼不是回帖了么?

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

如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: 赵崇友    时间: 2013-5-18 21:29
殇_心。 发表于 2013-5-18 21:17
一楼不是回帖了么?

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

这个方法不可行。。。只适合一般情况!!!!当double值很大时就不行了,看五楼!!
作者: 殇_心。    时间: 2013-5-18 21:56
赵崇友 发表于 2013-5-18 21:29
这个方法不可行。。。只适合一般情况!!!!当double值很大时就不行了,看五楼!! ...

BigDecima   你去查查api文档。。 处理大数的
作者: cowthan    时间: 2013-5-18 23:25
Double d = 123.456;
int x = (int)d;  //结果是123吧
double y = d - x;   //即123.456 - 123 = 0.456
楼主问的不就是这么个问题吗?还是我的理解有误?
作者: 赵崇友    时间: 2013-5-19 07:40
cowthan 发表于 2013-5-18 23:25
Double d = 123.456;
int x = (int)d;  //结果是123吧
double y = d - x;   //即123.456 - 123 = 0.456

你没理解错,只是你给的方法健壮性不高,只适合一般的情况。。
作者: 赵崇友    时间: 2013-5-19 07:44
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-19 07:45
殇_心。 发表于 2013-5-18 21:56
BigDecima   你去查查api文档。。 处理大数的

貌似这个可以用,谢谢了!!!还是要伤心出马啊:lol
作者: 殇_心。    时间: 2013-5-19 11:22
赵崇友 发表于 2013-5-19 07:45
貌似这个可以用,谢谢了!!!还是要伤心出马啊

把自己的问题解决了才是王道。
老赵你的求知欲不错```!!!
作者: 赵崇友    时间: 2013-5-19 13:34
殇_心。 发表于 2013-5-19 11:22
把自己的问题解决了才是王道。
老赵你的求知欲不错```!!!

老师说的,不懂就要问!!:#




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