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);
第一个输出仍是一位小数,第二个则是多位,我想知道的是两式有什么的不同而造成输出位数的差异 展开
例如: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);
第一个输出仍是一位小数,第二个则是多位,我想知道的是两式有什么的不同而造成输出位数的差异 展开
3个回答
展开全部
看是怎么个算法---
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位小数
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位小数
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
double并不能很精确的表示一个数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
o ~!
我 也再学JAVA
不过我看的比较快
这也这要是你的表达式的问题
如果你自己不加其他的限制条件的话就是默认的】
首先你要知道一个double型,最多可以表达15位小数。
像你的第一个本身就是只有一位小数,它不会自己去添加0的
而后面的却是除不尽的,,但是double型的最多也只有15~16位,所以也就是保留15~16位了~!
以后有空可以多交流一下
上面的说的对,浮点小数都不能很精确的表达一个小数
我 也再学JAVA
不过我看的比较快
这也这要是你的表达式的问题
如果你自己不加其他的限制条件的话就是默认的】
首先你要知道一个double型,最多可以表达15位小数。
像你的第一个本身就是只有一位小数,它不会自己去添加0的
而后面的却是除不尽的,,但是double型的最多也只有15~16位,所以也就是保留15~16位了~!
以后有空可以多交流一下
上面的说的对,浮点小数都不能很精确的表达一个小数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询