java中double型数小数位数的问题

为什么用double型输出数的时候,有时会有1位小数,有时会有15~16位小数?如何判断什么时候有几位小数?例如:doublex=2.3;x+=1.2*3+x++;Sys... 为什么用double型输出数的时候,有时会有1位小数,有时会有15~16位小数?如何判断什么时候有几位小数?
例如:double x = 2.3;
x += 1.2 * 3 + x++;
System.out.println(x);
x += x % 3 + 4 * 2 + x--;
System.out.println(x);
System.out.println(1.0 / 3.0);
结果为:
8.2
26.599999999999998
0.3333333333333333
把问题改成
x += 1.2 * 3 + x++;
System.out.println(x);
x += x + 4 * 2 + x--;
System.out.println(x);
第一个输出仍是一位小数,第二个则是多位,我想知道的是两式有什么的不同而造成输出位数的差异
展开
 我来答
wuhui5201717
2008-06-01 · TA获得超过275个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:168万
展开全部
看是怎么个算法---
4 / 2 = 2 两个都是整数,并且能整除
4.0/2 = 2.0 有一个是一位小数,则结果必须至少一位小数,4 / 2.0 = 2.0同理
5 / 2 = 2.5 从最后一位不算 0 的算起,不超过16位情况
1 / 3 = 0.3333333333333333 则有16位小数,因为除不尽,但最多只能是16位小数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jessdy
2008-06-01 · 超过10用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:49万
展开全部
double并不能很精确的表示一个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cfd406635982
2008-06-02 · TA获得超过462个赞
知道答主
回答量:304
采纳率:0%
帮助的人:165万
展开全部
o ~!
我 也再学JAVA
不过我看的比较快
这也这要是你的表达式的问题
如果你自己不加其他的限制条件的话就是默认的】
首先你要知道一个double型,最多可以表达15位小数。
像你的第一个本身就是只有一位小数,它不会自己去添加0的
而后面的却是除不尽的,,但是double型的最多也只有15~16位,所以也就是保留15~16位了~!
以后有空可以多交流一下

上面的说的对,浮点小数都不能很精确的表达一个小数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式