java计算问题

pilishou 2009-06-23 09:35:11
我在写业务逻辑的时候发现一个问题
我在计算百分比的时候发现
int a=1;int b=3;
double c=0;
c=a/b;
结果发现c不是我想要的结果了,并不是0.3333333333.....................
结果是0.

然后我输出
这条
System.out.println(1/3);
结果也为0;

高手指点下,这个事Java的问题,还是.....
...全文
47 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuqinghehappy 2009-06-23
  • 打赏
  • 举报
回复
a和b都是int型的,int型/int型=int型
aijavalei 2009-06-23
  • 打赏
  • 举报
回复
刚调试了一下,按照你的代码,答案是0.0,呵呵··还是被强制转换了····
GoWish 2009-06-23
  • 打赏
  • 举报
回复
建议数学运算特别是除法要保留小数位的运算用Bigdecimal类型。
aijavalei 2009-06-23
  • 打赏
  • 举报
回复
同意6楼的说法,你在初始化C的时候已经赋值了0,C语言中是自己强制转化类型的,java中的算法也是遵循c语言的。但是针对字符串有所不同····
zuijiejina 2009-06-23
  • 打赏
  • 举报
回复
这个不是java的问题,是楼主自己没搞懂里面的原理。
a/b 连个int的数,结果也是int,在传给c之前就已经是0了。。。
kadach11 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pilishou 的回复:]
我早试过咯,类型都是 double也是一样
double a,b,c;
我都郁闷了
[/Quote]

LZ别一概而论。就算没写测试代码,一看就知道结果会如何。何况我都亲测过。
tuke0001 2009-06-23
  • 打赏
  • 举报
回复
变量a和b都是int型
a/b的结果当然也是int型,int型是不带小数的,所以0.33333333直接舍去小数得到0
c由于是double型,所以a/b得到int的0后再被强制转换到double型得0.0


JAVA中的直接整数默认是int,应该这样写double型的:
System.out.println(1D/3D);
pilishou 2009-06-23
  • 打赏
  • 举报
回复
我早试过咯,类型都是 double也是一样
double a,b,c;
我都郁闷了
pilishou 2009-06-23
  • 打赏
  • 举报
回复
我测试了下,1/2输出结果都是为0,如果结果有带小数就会出现0结果,不管怎么简单的计算。整数就是好的
kadach11 2009-06-23
  • 打赏
  • 举报
回复
这涉及到类型转换问题。
正确写法是

double a=1;double b=3;
double c=0;
c=a/b;
System.out.println(c);

或者你强制转换你的INT。能得到你想要的效果!

81,092

社区成员

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

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