关于数据类型转换问题
题目: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());
}
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());
}
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);
试一下,可不可以
----------------解决方案--------------------------------------------------------