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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 樊鹏飞 于 2012-9-14 09:41 编辑

在看毕老师讲解Math类的视频时,最后给我们留了一个保留小数后两位的练习,我也看到论坛里有好几个方法解决了这一问题,后来我自己在练习的时候想要把小数的整数部分和小数部分分别输出。比如有一个小数2.123,我要将整数部分2,已及小数部分0.123分开输出,求教如何解决?

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 鼓励一下!

查看全部评分

8 个回复

倒序浏览
这样也能达到效果:
double s=2.123;
int x;
double y;
x=(int)s;//整数部分
y=(double)(s-x);

回复 使用道具 举报
完整代码如下:

import java.util.*;
import javax.swing.*;
public class Fudianshu
{     
    public static void main(String args[])
     {
            String k = JOptionPane.showInputDialog("请输入你的浮点数!");
            double x = Double.parseDouble(k);
            System.out.println("你输入的浮点数是:"+x);
            int m = (int)x;
            double y=x-m;
            System.out.println("整数部分:"+m);
            System.out.println("小数部分:"+y);
            System.exit(0);
    }
}
程序中把输入的浮点数强制类型转换为整形数,然后输出就是整数了。在用浮点数减去整数就得到小数部分,然后输出就是小数部分。

System.exit(0);是退出程序返回系统,然后把0值返回给调用的进程,如果你的系统调用进程(或者
shell)要用到这个返回值来做进一步控制的话,这个返回值才有用,否则就没有多大
用处

回复 使用道具 举报
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 double s=2.123;
  6.                 int x;
  7.                 float y;
  8.                 x=(int)s;//整数部分
  9.                 y=(float)(s-x);//得到小数部分,不是double型的,是floati浮点型的值。               

  10.                 System.out.println(x);
  11.                 System.out.println(y);
  12.         }
  13. }
复制代码
这样就好了,得到的结果就是 2和0.123了。
回复 使用道具 举报
武庆东 发表于 2012-9-13 23:51
这样也能达到效果:
double s=2.123;
int x;

整数部分可以,小数部分输出不是0.123,而是0.12300000000000022
回复 使用道具 举报
杨卫腾 发表于 2012-9-14 00:11
这样就好了,得到的结果就是 2和0.123了。

嗯  这样可以了 那为什么如果小数部分用double型的 输出之后不是0.123
回复 使用道具 举报
皮卫凯 发表于 2012-9-14 00:02
完整代码如下:

import java.util.*;

小数部分输出不行
回复 使用道具 举报
李宁 中级黑马 2012-9-14 09:48:43
8#
用正则表达式切割行吗?
回复 使用道具 举报
樊鹏飞 发表于 2012-9-14 09:34
嗯  这样可以了 那为什么如果小数部分用double型的 输出之后不是0.123

这是因为两个浮点型的精度是不相同的,float是32位的,是单精度的,而double是64位的,是双精度的。
所以在此使用的是单精度的浮点类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马