1樓:匿名使用者
如果bai你仔細看過在php手冊du
中,對於浮點資料型別的說明
zhi,就會dao
看到其中有專門的一個回警告提示,就談到這答個問題:
關於浮點數精度的警告
顯然簡單的十進位制分數如同 0.1 或 0.7不能在不丟失一點點精度的情況下轉換為內部二進位制的格式。這就會造成混亂的結果:
例如,floor((0.1+0.7)*10)通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似 7.9。
這和一個事實有關,那就是不可能精確的用有限位數表達某些十進位制分數。例如,十進位制的 1/3 變成了 0.3。
所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函式或者 gmp 函式。
實際上,並不是php會有這種現象,對於其他計算機語言,類似的浮點數問題也是差不多的。
2樓:匿名使用者
這個php 沒關係
計算機中 浮點數 的儲存 照成的
它是以 2進位制存的 存的
可以看看 計算機基礎 原碼 反碼 補碼
php取模的問題
3樓:龍佔長歌
問了問朋友發現一個問題:就是浮點轉整型的時候:
<?php
$a = 9.45*100;
var_dump($a);
var_dump(intval($a));
$a = 945*1.00;
var_dump($a);
var_dump(intval($a));
?>
執行結果如下:
float(945) int(944) float(945) int(945)
同是浮點 945 ,一個轉成 944 一個轉成 955
顯然簡單的十進位制分數如同 0.1 或 0.7 不能在不丟失一點點精度的情況下轉換為內部二進位制的格式。
這就會造成混亂的結果:例如,floor((0.1+0.
7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似 7.9999999999...。
這和一個事實有關,那就是不可能精確的用有限位數表達某些十進位制分數。例如,十進位制的 1/3 變成了 0.3333333. . .。
所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。
也就是說 9.45*100 類似等於 944.9999
以上解釋希望能對你有所幫助。。
關於php中,關於php中 POST submit 的問題
if post submit post submit 這裡重點不是要接收它的值,而是判斷他有沒有按這個按鈕,也就是是否提交表單,如果提交了就執行它下面 裡的程式,你可以做以下理解 if 提交表單 else 這個是用來判斷下是否為表單提交過來的值用。有的程式寫的不嚴謹,直接通過url也可以執行入庫操作...
php中n是什麼意思,php中的是什麼意思
在php語言中,字串裡面的 n表示換行,是ascii為10的那個特殊字元,作用是echo等輸出字串的時內候,這個符號以後的內容在新的一行上輸出,n就是根據因為的容new line得來的。php裡面除了 n,還有 r表示回車 ascii是13 還有 t表示製表 ascii是9 這些和perl c語言基...
php中如何傳送http請求,PHP中如何傳送HTTP請求
看起來你的 正確,不知道你有什麼問題。這個方法不錯,但是最好用一個封裝好的類。比如http client之類的,網上這樣的類挺多了,你可以搜尋一下。當然直接用socket也可以。php 如何傳送http請求 第一種bai 實現方式 實用socket程式設計,通常我du們實用fsockopen這個函z...