定义一个float数32.12,减去整数部分后,余下的为什么不是0.12,而是一串小数?
float num=32.12f;   
System.out.println(num-(int)num);
代码如上所示,定义一个float数,减去整数部分后,余下的为什么不是0.12,而是一串小数0.11999893?

6个回答

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问