JAVA 中除法后小数精度问题

除法后总是归整数的问题...很是郁闷.比如3/5int结果为0,double结果为0.0....为什么???有什么办法能让除法后的小数保留下来?... 除法后总是归整数的问题...很是郁闷. 比如3/5 int 结果为 0, double 结果为0.0.... 为什么??? 有什么办法能让除法后的小数保留下来? 展开
 我来答
TecBegger
2010-02-28 · 超过23用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:56.9万
展开全部
你说的这个问题涉及到数字精度问题,在程序中,数字运算总是低精度的向高精度的自动转化。比如(int)/(float)就会得到你想要的小数数位,这是由数字在计算机中的运算方式决定的。如果你用3/5.0或者3.0/5,你就可以得到你想要的小数。
在计算机中,整型(int)和浮点(float,double)的表示形式各不相同,占用内存空间也不同,在运算时,为了得到正确的结果,就要进行对位,如果数据类型不一致,就要进行转化。在硬件层面上就是把占用内存少的整型向浮点转换,也就是为这个整型添加额外的字节参与运算,尽管这些字节中都是0,这是数字精度的问题。
现在是两个整形数,运算时,计算机认为不需要进行数据类型的转化,所以就得到你见到的结果。
kejiaweiren
推荐于2017-11-23 · TA获得超过6740个赞
知道大有可为答主
回答量:1774
采纳率:0%
帮助的人:3359万
展开全部
因为int 是整数,整数除整数就是整数
double是小数。小数除小数才是小数
有两种方法,
1.是直接用小数除
如3.0/5.0
这样编译器会认为他们是double类型
2.是转换成double,或直接定义成double
如double a=3;
double b=5;
System.out.println(3/5);
还有什么不懂可以HI我
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忆林子
2010-02-28 · TA获得超过2034个赞
知道大有可为答主
回答量:4079
采纳率:0%
帮助的人:2739万
展开全部
int 类型是按整除结果算,如果你两个数不能整除,那结果就会不对。
double、BigDecimal等如果你不设置精度的话,那它默认就会以你的两个数中精度大的那个来设置一个精度,而你这里两个都是整数,所以它把计算结果也按照整数进行操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daodiba3
2010-02-28 · TA获得超过588个赞
知道小有建树答主
回答量:1236
采纳率:0%
帮助的人:469万
展开全部
恩 用double去运算 不然你本来的句子是 double d = 3/5; 3/5都是整数 计算起来是0 而你付值给double 就变成了0.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slug100
2010-02-28 · 超过12用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
用最简单的方法就是3.0/5这样就会得到你想要的结果了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式