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

熱點內容
vb屬於編譯 瀏覽:44
淘特app干什麼的 瀏覽:927
ubuntu安裝deb命令 瀏覽:785
php彈出輸入框 瀏覽:306
phpmysql框架 瀏覽:198
內存池slab演算法 瀏覽:500
為什麼有些程序員會有語言優越感 瀏覽:469
python抓取wifi數據 瀏覽:665
單片機c語言關鍵字 瀏覽:50
安卓手機直播怎麼開啟設置 瀏覽:899
頭發少能做程序員嗎 瀏覽:774
同一個伺服器多個ip地址嗎 瀏覽:942
androidtext文字居中 瀏覽:79
php網站開發框架 瀏覽:406
分辨真假貨的app是什麼 瀏覽:398
字元命令大全 瀏覽:215
php生成js文件 瀏覽:289
雲端伺服器什麼作用 瀏覽:5
關閉系統運行命令 瀏覽:966
程序員哪找兼職 瀏覽:790