注册 登录
编程论坛 J2EE论坛

关于数据类型转换问题

冬天的一条鱼 发布于 2010-09-08 20:39, 1269 次点击
题目:
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 编辑 ]
13 回复
#2
冬天的一条鱼2010-09-08 21:29
怎么没人回答?  不要看不起我的问题嘛  虽然简单点  但我做不出 高手赐教下
#3
zongshi1232010-09-08 23:08
程序代码:
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());
    }
   
#4
冬天的一条鱼2010-09-08 23:43
回复 3楼 zongshi123
  你把b,c的类型改了  书上这里是不改的  我觉得这个根本实现不了 b和c都是int型 怎么都不可能输出double型  应该是我们的教材出错了
#5
我爱游戏吧2010-09-08 23:50
想了很久 好像解决不了
#6
jackieli20742010-09-09 17:51
感觉有点像脑筋急转弯
#7
maxliz2010-09-09 17:58
说实话 你的代码写的有点不是太规范 有点眼睛痛
好好看下toString的api
另外如果有"+"就是字符串拼接
#8
maxliz2010-09-09 18:00
+拼接来的 不管你b和c是什么类型的 输出后都是String类型的
#9
冬天的一条鱼2010-09-10 19:23
回复 8楼 maxliz
  代码我用的是记事本写的 所以成这样子了  回去考虑了很久 还是做不出来
#10
柠檬可乐2010-09-10 23:47
double b=Double.parseDouble(5.0/6.0);
double c=Double.parseDouble(5./6.0);
试一下,可不可以
#11
冬天的一条鱼2010-09-11 14:01
回复 7楼 maxliz
你说+b是拼接 我去看书了 确实是这样的 但b定义的是整型啊, 它怎么能够存放double
#12
maxliz2010-09-11 17:30
没看你问题 现在有个坏习惯了 看别人代码有点不习惯
java中有强制转型 也有自动转型的 你想下~
#13
冬天的一条鱼2010-09-12 21:23
回复 12楼 maxliz
老大实在想不出来  ,又不能增加其他变量。 我想了好几天了。 解决不了 ,你帮帮我把
#14
javaccd2010-11-24 10:41
在计算中,系统默认的是向大方向转移,  b = 5.0/6.0 ;你后面的5.0 和6.0 (在Java编辑中 ,小数代表是double 型),而你的b是整形,在操作时,可以将b 改成double 型就可以了,因为大的方向是double ,故b应转为整形,太乱了 ,你自己想把,我是Fresh
1