为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕桂英4014372 2019-03-08 03:00:19
比如在excel中显示86.4,双击后在编辑栏里也是,而且已经设置了两位小数,但是用php excel读取出来输出是86.40000000000001 而且只有使用sprintf("%.1f", $data)才能四舍五入,用round($data,1)输入的还是很多位小数 请求指教出现这种情况的具体原因
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

浮点数的表示(IEEE 754):

  • 浮点数, 以64位的长度(双精度)为例, 会采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位).
  • 符号位:最高位表示数据的正负,0表示正数,1表示负数。
  • 指数位:表示数据以2为底的幂,指数采用偏移码表示
  • 尾数:表示数据小数点后的有效数字.

关键问题是如何用二进制来表示十进制的小数:

文字描述该过程如下:将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,知道小数部分为0。
特殊情况: 小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编程语言中表示小数会出现误差的原因。

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 1493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信