导航:首页 > 编程语言 > phpexcel浮点数

phpexcel浮点数

发布时间:2024-10-25 17:19:53

phpexcel 获取99.9 得到的是99.90000000000001

这个不是phpexcel的问题,这个问题源于浮点数的表示方式,如果你会其它语言,你会发现其实很多其它编程语言也会有这种情况。

php官方文档也有说明:

浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。
此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。

所以,如果你想在处理浮点数的时候得到相对满意的值,可能就需要自己专门处理,如:
$v = round($v, 2);

如果有兴趣,可以看下这里(网络规则限制,你自己吧url中的空格去掉):
http:// php. net /manual/zh/language.types.float.php
http:// en. wikipedia. org/wiki/IEEE_floating_point

② PHP如何格式化数字

PHP格式化数字的函数是number_format

我建议你去下载一个PHP的使用手册,或者看网上的在线手册也行。

http://www.itlearner.com/code/php/

关于他的用法如下:

语法: string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]);

返回值: 字符串

函数种类: 数学运算

内容说明

本函数用来将浮点参数 number 格式化。若没加参数 decimals 则返回的字符串只要整数部份,加了此参数才依参数指定的小数点位数返回。参数 dec_point 表示小数点的表示方式方法,默认值是 ".",若需要转换成其它的小数点就可以在这个参数改掉。参数 thousands_sep 为整数部份每三位的分隔符号,默认值是 ","。本函数最特别的地方就是参数数目,最少要有一个,也就是欲格式化的字符串;也可以有二个或者四个参数,但不能用三个参数。治募�注意的是指定小数点的位数之后的数字直接舍弃,没有四舍五入的情形。

使用范例

<?
$short_pi = "3.14159";
$my_pi = number_format($short_pi, 2);
echo $my_pi."\n"; // 3.14
$foo = 850017.9021;
$new_foo = number_format($foo, 3, ".", " ");
echo $new_foo."\n"; // 850 017.902
?>

③ PHP使用 PHPExcel 导入excel中的时间后值变为了浮点数

在最近使用phpExcel导入表格中的数据解析时,发现时间导入后变成了浮点数类似:43911.144555这种

为什么会出现这种情况呢?

excel软件中的日期是从 1900-01-01 开始计算的
但是php 是从 1970-01-01开始计算的。
这两者间有一个天数差 25569
时间是格林威治时间

故此
可以用下面的方法去格式化表格导入的时间为php时间
d = 25569; //excel和php之间相差的时间
data - t);

阅读全文

与phpexcel浮点数相关的资料

热点内容
华为荣耀系统编译 浏览:730
看板块app哪个好用 浏览:666
java即时编译结果怎么保存 浏览:907
java工程师在深圳 浏览:656
手机sql编译软件 浏览:524
外网服务器地址购买 浏览:994
空调压缩机电容价格 浏览:381
小程序选什么云服务器 浏览:656
如何把java编译回中文 浏览:777
天联软件服务器地址是什么 浏览:964
stc单片机加密 浏览:140
小程序地产广告源码 浏览:542
消费者信息加密私域 浏览:431
程序员开发团队可以怎么创业 浏览:925
设备共享服务器是什么意思 浏览:126
java符号类型 浏览:331
redis客户端java 浏览:214
javatn 浏览:278
应用宝哪里下载王卡免流量app 浏览:235
uv7代喷头加密与不加密 浏览:467