请问:为什么 8.56%3显示错误啊?(附代码)

cecile121 2006-03-11 10:41:55
//Jisuan.java

public class Jisuan{
public static void main(String[] args){
float a=8.56%3;
System.out.println(a);
}
}
为什么错啊?
...全文
120 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
螃蟹k3179 2006-03-13
  • 打赏
  • 举报
回复
对了
cecile121 2006-03-13
  • 打赏
  • 举报
回复
那你说的“java的语言规范,后面不带f的,一律看成是double”是指的小数了??
螃蟹k3179 2006-03-13
  • 打赏
  • 举报
回复
如果你要得出2.6666666
double a = 8.0/3
螃蟹k3179 2006-03-13
  • 打赏
  • 举报
回复
8是int,所以8/3也是int,也就是2
然后你把这个2转成了double,它就给你加了个难看的".0"
cecile121 2006-03-13
  • 打赏
  • 举报
回复
我把它改了一下,变成double a=8/3,
为什么输出结果是2.0啊?为什么不是一个double 值啊???
螃蟹k3179 2006-03-11
  • 打赏
  • 举报
回复
这个是java的语言规范,后面不带f的,一律看成是double
cecile121 2006-03-11
  • 打赏
  • 举报
回复
8.56为什么是double 啊??为什么不是float??
螃蟹k3179 2006-03-11
  • 打赏
  • 举报
回复
double是64bit的,float是32bit的.
float可以安全得转到double
double a = 0.0f
但double要转为float就不安全了
float a = 0.0 (编译不通过)
因此只能进行强行转换
float a = (float)0.0
或者直接使用float
float a = 0.0f
螃蟹k3179 2006-03-11
  • 打赏
  • 举报
回复
8.56 是double , 所以8.56%3也是个double
cecile121 2006-03-11
  • 打赏
  • 举报
回复
是不是,系统默认每一个数都是int型啊?
是不是这个原因啊??
螃蟹k3179 2006-03-11
  • 打赏
  • 举报
回复
非要用float就在前面加(float),强行转换
螃蟹k3179 2006-03-11
  • 打赏
  • 举报
回复
double a=8.56%3;
cecile121 2006-03-11
  • 打赏
  • 举报
回复
为什么在 8.56后面加上 f 就行了?
谁能给解释一下啊?

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧