导航:首页 > 编程语言 > 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浮点数相关的资料

热点内容
地推统计图app怎么做 浏览:162
android文件夹不能用了 浏览:857
加密软件的日志 浏览:892
肾病pdf 浏览:230
网站怎么用本地服务器 浏览:120
javadoc导入android 浏览:517
文件扫描成pdf 浏览:696
凉山火灾救援命令 浏览:54
压缩机三相检测 浏览:861
linux怎么安装光盘 浏览:799
宽带服务器无响应是为什么 浏览:226
压缩包内看图 浏览:914
安卓手机如何发现app后台调用情况 浏览:561
程序员简历工作描述 浏览:159
服务器中强制疾跑的指令是什么 浏览:54
日语命令性 浏览:261
免费的程序编译游戏 浏览:892
如何安装屏蔽的APP 浏览:198
猪脸识别app如何下载 浏览:156
卓岚串口服务器如何使用 浏览:440