黑马程序员技术交流社区

标题: 如何分开输出某一小数的整数部分和小数部分 [打印本页]

作者: 樊鹏飞    时间: 2012-9-13 23:46
标题: 如何分开输出某一小数的整数部分和小数部分
本帖最后由 樊鹏飞 于 2012-9-14 09:41 编辑

在看毕老师讲解Math类的视频时,最后给我们留了一个保留小数后两位的练习,我也看到论坛里有好几个方法解决了这一问题,后来我自己在练习的时候想要把小数的整数部分和小数部分分别输出。比如有一个小数2.123,我要将整数部分2,已及小数部分0.123分开输出,求教如何解决?
作者: 武庆东    时间: 2012-9-13 23:51
这样也能达到效果:
double s=2.123;
int x;
double y;
x=(int)s;//整数部分
y=(double)(s-x);


作者: 皮卫凯    时间: 2012-9-14 00:02
完整代码如下:

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)要用到这个返回值来做进一步控制的话,这个返回值才有用,否则就没有多大
用处


作者: 杨卫腾    时间: 2012-9-14 00:11
  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-14 09:26
武庆东 发表于 2012-9-13 23:51
这样也能达到效果:
double s=2.123;
int x;

整数部分可以,小数部分输出不是0.123,而是0.12300000000000022
作者: 樊鹏飞    时间: 2012-9-14 09:34
杨卫腾 发表于 2012-9-14 00:11
这样就好了,得到的结果就是 2和0.123了。

嗯  这样可以了 那为什么如果小数部分用double型的 输出之后不是0.123
作者: 樊鹏飞    时间: 2012-9-14 09:35
皮卫凯 发表于 2012-9-14 00:02
完整代码如下:

import java.util.*;

小数部分输出不行
作者: 李宁    时间: 2012-9-14 09:48
用正则表达式切割行吗?
作者: 杨卫腾    时间: 2012-9-14 13:47
樊鹏飞 发表于 2012-9-14 09:34
嗯  这样可以了 那为什么如果小数部分用double型的 输出之后不是0.123

这是因为两个浮点型的精度是不相同的,float是32位的,是单精度的,而double是64位的,是双精度的。
所以在此使用的是单精度的浮点类型




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