| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1269 人关注过本帖
标题:关于数据类型转换问题
只看楼主 加入收藏
冬天的一条鱼
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2009-3-3
结帖率:93.33%
收藏
已结贴  问题点数:5 回复次数:13 
关于数据类型转换问题
题目:
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 编辑 ]
搜索更多相关主题的帖子: 数据 类型 
2010-09-08 20:39
冬天的一条鱼
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2009-3-3
收藏
得分:0 
怎么没人回答?  不要看不起我的问题嘛  虽然简单点  但我做不出 高手赐教下
2010-09-08 21:29
zongshi123
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:50
专家分:310
注 册:2009-9-13
收藏
得分:0 
程序代码:
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());
    }
   

一个没房没车没钱没权没头没脑没心没肺没脸没皮的穷鬼垃圾小流氓外带人妖大尾(yi)巴狼
2010-09-08 23:08
冬天的一条鱼
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2009-3-3
收藏
得分:0 
回复 3楼 zongshi123
  你把b,c的类型改了  书上这里是不改的  我觉得这个根本实现不了 b和c都是int型 怎么都不可能输出double型  应该是我们的教材出错了
2010-09-08 23:43
我爱游戏吧
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2010-9-8
收藏
得分:0 
想了很久 好像解决不了
2010-09-08 23:50
jackieli2074
Rank: 6Rank: 6
来 自:上海
等 级:侠之大者
威 望:1
帖 子:183
专家分:494
注 册:2010-8-3
收藏
得分:0 
感觉有点像脑筋急转弯
2010-09-09 17:51
maxliz
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:5
帖 子:71
专家分:248
注 册:2010-8-22
收藏
得分:0 
说实话 你的代码写的有点不是太规范 有点眼睛痛
好好看下toString的api
另外如果有"+"就是字符串拼接
2010-09-09 17:58
maxliz
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:5
帖 子:71
专家分:248
注 册:2010-8-22
收藏
得分:0 
+拼接来的 不管你b和c是什么类型的 输出后都是String类型的
2010-09-09 18:00
冬天的一条鱼
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2009-3-3
收藏
得分:0 
回复 8楼 maxliz
  代码我用的是记事本写的 所以成这样子了  回去考虑了很久 还是做不出来
2010-09-10 19:23
柠檬可乐
Rank: 4
等 级:业余侠客
威 望:6
帖 子:66
专家分:205
注 册:2009-6-16
收藏
得分:0 
double b=Double.parseDouble(5.0/6.0);
double c=Double.parseDouble(5./6.0);
试一下,可不可以
2010-09-10 23:47
快速回复:关于数据类型转换问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023091 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved