[求助]int乘以double返回值问题

JimCarter
博客专家认证
2017-07-15 02:33:13
int count=3;
double price=0.1;
System.out.println(count*price);

这段代码,返回值竟然是0.30000000000000004。不知为何?
把int count=3,换成double count=3.0。得出带结果也一样。
但是如果设置为int count=1,或者int count=2.相乘就能得出0.1和0.2。
这是什么原理?
...全文
1866 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
private_abstact 2017-07-25
  • 打赏
  • 举报
回复
精度丢失,可以使用BigDecimal类中一些方法来精准计算
yc_123cx 2017-07-17
  • 打赏
  • 举报
回复
整行和小数点类型
_砖 2017-07-16
  • 打赏
  • 举报
回复
这是在二进制转换时丢失了精度
来嘛_大官人 2017-07-15
  • 打赏
  • 举报
回复
好像是java内部对这种运算都是转成二进制的吧,算完了再转回来,可能就出现这种情况了 int i = 3; Double d = 0.1; System.out.println(i*10*d/10); 不知道为什么 这样就是0.3 - - - -
MikeDDT009 2017-07-15
  • 打赏
  • 举报
回复
自动转型的原因,int型和double型进行运算会先把int型转换成double型然后再进行运算

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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