当前位置: 代码迷 >> Java Web开发 >> 关于数据类型转换问题
  详细解决方案

关于数据类型转换问题

热度:156   发布时间:2010-09-08 20:39:48.0
关于数据类型转换问题
题目:
public class Arithmetic
{
public static void main(String [] args)
{
System.out.println("整数型:");
int a=0,b=0,c=0;
a=5/6;
System.out.println("5/6="+a);
b=5.0/6.0;//代码1有错误 需要修改
System.out.println("5.0/6.0="+b);
c=5/6.0;//代码2有错误,需要修改
System.out.println("5/6.0="+c);
}
}

书上说需要修改代码1和代码2所在行。

我改了很久 ,单独改动代码1和代码2所在行,我用强制转换类型,我怎么改都改不了。假如重新定义double类型,我可以改。假如不重新定义double类型,能不能改。

个人疑问:在输出语句中System.out.println("5.0/6.0="+b);和System.out.println("5/6.0="+c);中 假如将b和c在前面用强制类型转换成了double, 在输出语句中b和c是int型还是double?




忘记补充了 :

最后输出的时候要成:
整数型:
5/6=0
5.0/6.0=0.83333333334
5/6.0=0.83333333334

[ 本帖最后由 冬天的一条鱼 于 2010-9-8 20:43 编辑 ]
搜索更多相关主题的帖子: 数据  类型  

----------------解决方案--------------------------------------------------------
怎么没人回答?  不要看不起我的问题嘛  虽然简单点  但我做不出 高手赐教下
----------------解决方案--------------------------------------------------------
程序代码:
public static void main(String[] args) {
        System.out.println("整数型:");
        int a = 0;
        double b = 0, c = 0;
        a = 5 / 6;
        System.out.println("5/6=" + a);
        b = 5.0 / 6.0;// 代码1有错误 需要修改
        System.out.println("5.0/6.0="
                + new BigDecimal(b).setScale(5, BigDecimal.ROUND_UP)
                        .doubleValue());   
        //setScale(5, BigDecimal.ROUND_UP) 5 表示显示的小数位数,,后面的是取舍的模式
        
//显然,这个模式是,,只要显示的最后一位,后面只要还有位数就加1
        c = 5 / 6.0;// 代码2有错误,需要修改
        System.out.println("5/6.0="
                + new BigDecimal(c).setScale(6, BigDecimal.ROUND_UP)
                        .doubleValue());
    }
程序代码:
public static void main(String[] args) {
        System.out.println("整数型:");
        int a = 0;
        double b = 0, c = 0;
        a = 5 / 6;
        System.out.println("5/6=" + a);
        b = 5.0 / 6.0;// 代码1有错误 需要修改
        System.out.println("5.0/6.0="
                + new BigDecimal(b).setScale(5, BigDecimal.ROUND_UP)
                        .doubleValue());   
        //setScale(5, BigDecimal.ROUND_UP) 5 表示显示的小数位数,,后面的是取舍的模式
        
//显然,这个模式是,,只要显示的最后一位,后面只要还有位数就加1
        c = 5 / 6.0;// 代码2有错误,需要修改
        System.out.println("5/6.0="
                + new BigDecimal(c).setScale(6, BigDecimal.ROUND_UP)
                        .doubleValue());
    }
   

----------------解决方案--------------------------------------------------------
回复 3楼 zongshi123
  你把b,c的类型改了  书上这里是不改的  我觉得这个根本实现不了 b和c都是int型 怎么都不可能输出double型  应该是我们的教材出错了
----------------解决方案--------------------------------------------------------
想了很久 好像解决不了
----------------解决方案--------------------------------------------------------
感觉有点像脑筋急转弯
----------------解决方案--------------------------------------------------------
说实话 你的代码写的有点不是太规范 有点眼睛痛
好好看下toString的api
另外如果有"+"就是字符串拼接
----------------解决方案--------------------------------------------------------
+拼接来的 不管你b和c是什么类型的 输出后都是String类型的
----------------解决方案--------------------------------------------------------
回复 8楼 maxliz
  代码我用的是记事本写的 所以成这样子了  回去考虑了很久 还是做不出来
----------------解决方案--------------------------------------------------------
double b=Double.parseDouble(5.0/6.0);
double c=Double.parseDouble(5./6.0);
试一下,可不可以

----------------解决方案--------------------------------------------------------
  相关解决方案