導航:首頁 > 編程語言 > 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浮點數相關的資料

熱點內容
伺服器香港地址ping不通 瀏覽:283
源碼中的工廠模式 瀏覽:707
為什麼燕窩溯源碼可以更改經銷商 瀏覽:949
和伺服器連接的交換機叫什麼 瀏覽:773
蘋果手機如何設置伺服器 瀏覽:934
迅雷下載游戲需要解壓 瀏覽:853
3d平滑命令 瀏覽:41
必須去車管所解壓 瀏覽:387
室友命令我 瀏覽:311
lol全部命令 瀏覽:40
用什麼APP查指數 瀏覽:921
什麼是作品源碼 瀏覽:671
我的理想程序員該怎麼寫 瀏覽:842
英譯中國現代散文選pdf 瀏覽:448
裝飾設計模式java 瀏覽:23
linuxshell清屏命令 瀏覽:136
惠利app是什麼 瀏覽:779
游戲埠讀取伺服器失敗怎麼弄 瀏覽:878
linux修復mbr 瀏覽:128
磁碟格式化基本命令 瀏覽:578