weixin_37944392
jtl_007
采纳率40%
2017-03-17 03:30

定义一个float数32.12,减去整数部分后,余下的为什么不是0.12,而是一串小数?

已采纳
float num=32.12f;   
System.out.println(num-(int)num);
代码如上所示,定义一个float数,减去整数部分后,余下的为什么不是0.12,而是一串小数0.11999893?
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • jayby00 jayby00 4年前

    因为32.12后面的12其实就是11999893等等等。。。
    只是默认近似到了12,即使你手动赋值32.12 ; 这个是float精度的问题
    如果你想要一个非常精确的数字。建议你是用 BigDecimal 这个类(java 语言)
    希望对你有帮助
    2017年03月17日11:32:49

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 4年前

    浮点数存在两个误差,一个是本身的精度误差,一个是它和10进制转换的误差。要精确可以用 decimal,它的原理是内部采用整数运算,只是把小数点平移形成小数,所以没有误差。

    点赞 评论 复制链接分享
  • HackAge4619 写给初学者的几封信 4年前

    这是正常的,float计算出现精度丢失,得到的是一个近似值

    点赞 评论 复制链接分享
  • shen_wei shen_wei 4年前
    点赞 评论 复制链接分享
  • qq_29594393 当作看不见 4年前
    点赞 评论 复制链接分享
  • qq_37739083 qq_37739083 4年前

    float类型与int类型不同,你都未float类型就行了

    点赞 评论 复制链接分享

相关推荐