两个double型变量相乘和相除的问题

ratzip 2011-02-19 10:58:18
为什么当两个double型的变量相除的时候,小数点后的位数不会很多,比如 x和y 是double型的两个变量, x=3.0,y=5.0
x/y = 0.6, 但是当两个double型变量相乘的时候,结果会有很多位,比如 1.1 * (x/y) = 1.66000000000##,这是为什么啊?

哪位大哥能帮我解释一下?
...全文
1050 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lliiqiang 2011-02-20
  • 打赏
  • 举报
回复
和精度有关
龙四 2011-02-19
  • 打赏
  • 举报
回复
自己用二进制算一下就明白了
magong 2011-02-19
  • 打赏
  • 举报
回复
和乘除没关系吧
huhk 2011-02-19
  • 打赏
  • 举报
回复
有些值在二进制里是不能精确表示的,
就好像在三进制里可以简单的表示1/3,但在十进制是不能精确表示的道理一样。
  • 打赏
  • 举报
回复
因为只有 64 位的 double 无法表示值域内所有的数!
husband8375 2011-02-19
  • 打赏
  • 举报
回复
用BIGDOUBLE来实现吧。。。。里面可以实现指定的精度的。。。。
ratzip 2011-02-19
  • 打赏
  • 举报
回复
这个敲错了!

[Quote=引用 6 楼 huyong479072052 的回复:]

输出时
0.6
0.66
楼主确定你输出的是
1.66000000000?
[/Quote]
huyong479072052 2011-02-19
  • 打赏
  • 举报
回复
输出时
0.6
0.66
楼主确定你输出的是
1.66000000000?
hardsonxu 2011-02-19
  • 打赏
  • 举报
回复
float和double只能用来做科学计算或者是工程计算,精确计算要用BigDecimal。
参见《effective java》,里面说得很详细
zqfddqr 2011-02-19
  • 打赏
  • 举报
回复
1.1 * (x/y) 我怎么等于了0.66

62,635

社区成员

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

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