为什么excel中显示一位小数,php excel 读取出来显示很多小数?

比如在excel中显示86.4,双击后在编辑栏里也是,而且已经设置了两位小数,但是用php excel读取出来输出是86.40000000000001

而且只有使用sprintf("%.1f", $data)才能四舍五入,用round($data,1)输入的还是很多位小数

请求指教出现这种情况的具体原因

慕桂英4014372
浏览 1494回答 1
1回答

精慕HU

浮点数的表示(IEEE 754): 浮点数, 以64位的长度(双精度)为例, 会采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位). 符号位:最高位表示数据的正负,0表示正数,1表示负数。 指数位:表示数据以2为底的幂,指数采用偏移码表示 尾数:表示数据小数点后的有效数字. 关键问题是如何用二进制来表示十进制的小数: 文字描述该过程如下:将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,知道小数部分为0。 特殊情况: 小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编程语言中表示小数会出现误差的原因。
打开App,查看更多内容
随时随地看视频慕课网APP