java 算乘法时得数不精确

比如算6.9*7时,应该得48.3,但是显示的是48.300000000000004,为什么呢??... 比如算6.9*7时,应该得48.3,但是显示的是48.300000000000004,为什么呢?? 展开
 我来答
我爱家乡水
2010-11-03 · TA获得超过282个赞
知道小有建树答主
回答量:292
采纳率:0%
帮助的人:72.9万
展开全部
不是 java算法不精确!
计算机都是这样!

6.97 这是一个十进制表示 的,这个数无法用二进制 精确表示出来!
比如 可以用8位,16位 ,32位表示一个数!但即使32位,还不能准确表示怎么办?没办法!

像这种情况 得出一个结果在 48.3 +0.00000001 和-0.00000001 范围之内就算精确!

电脑毕竟 是电脑,很多我们认为很天经地义的事,电脑很难做,这是十进制转换二进制数据丢失造成的!

可以理解
qq663135128
2010-11-03 · TA获得超过235个赞
知道答主
回答量:159
采纳率:0%
帮助的人:151万
展开全部
java 要精确运算要用到 java.math.BigDecimal

bigDecimal 是个辅助计算了 能做到精确的小数位。 一般用它的 string 构
造函数。。一般钱数运算和精确运算都用它。。

例子:

BigDecimal a=new BigDecimal("6.9");
BigDecimal b=new BigDecimal("7");
System.out.println(a.multiply(b));

还有精确小数 四舍五入 比较大小等.....

楼主可以自己写个辅助精确计算的类~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanjunfu
2010-11-03 · TA获得超过295个赞
知道答主
回答量:215
采纳率:0%
帮助的人:281万
展开全部
你的代码最好贴出来。
应该是你设定小数点后面多少位决定的。你用
double int = 6.9*7;的话 就是48.3了。你贴代码给我看看,我在线,。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rain0825
2010-11-03 · TA获得超过589个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:170万
展开全部
使用别的数据类型

BigDecimal
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
——贪念你温柔
2010-11-03
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
你把结果转型单精度类型(float)试试呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式