php比較浮點數
① php怎麼判斷一個浮點數是 0.1的倍數
if(i % 10 == 0){
alert(i + "是10的倍數");
}
② php中比較兩個數大小的內置函數是什麼
函數描述:mixed max(mixed arg1, mixed arg2, …,mixed argn);
返回值:返回此數組中的最大值,若參數中有浮點數,則所有參數轉化成浮點數,
返回值也為浮點數;否則所有參數轉化成整數,返回值為整數。
函數描述:mixed min(mixed arg1, mixed arg2, …,mixed argn);
返回值:返回此數組中的最小值,若參數中有浮點數,則所有參數轉化成浮點數,
返回值也為浮點數;否則所有參數轉化成整數,返回值為整數。
③ PHP 的浮點型計算如何保證准確度
計算機裡面,一律只保留小數點後面14位,無論是否循環不循環,如果沒那麼多位就添0,如果超過了就四捨五入。
④ 在php語言中,兩個浮點數float怎樣比較大小
浮點數判斷需要注意,float
和double
的精度范圍,超過范圍的數字會被忽略
(1)
浮點數大小判斷
如果沒有等號關系在裡面,也就必然一大一小,那麼直接用
>
或者
<
(2)
浮點數相等判斷
因為
浮點數在內存中存放,可能無法精確的儲存,所以同一個值,可能有不同的內存數據,所以要使用以下的方法:
以float
為例,32位APP中精度為
6-7,所以取
1e-7。
兩個數字
A
、
B,
if
(
|A-B|
<1e-7
)
則
A、B相等。
⑤ php中的浮點數分單雙精度嗎用gettype()得到的double,用var_mp()是float
PHP中,float指「泛稱的浮點數」,而不像「java或c中特指單精度浮點single-precisioned float」
double是指雙精度浮點,全稱double-precisioned float
按理浮點類型都因該返回'float',
getType函數由於要保持歷史兼容,以前舊版就返回double,所以現在仍然返回double
PHP的基本類型中也只有64bit雙精度浮點一種浮點數,即double。PHP沒有使用單精度32bit浮點。
⑥ PHP中可以使用科學計數法的格式表示浮點數嘛
PHP 中是可以使用科學計數法表示浮點數的。
其實你可以自己寫兩行代碼測試一下。
自己測試出來的結課往往會記得更牢固。
⑦ php 浮點加減是不是會出現精度問題
前段時間同事在算個值的時候發現,算出來的值不對,於是來問我,之前的開發中也遇到過這個問題,已經記不清楚怎麼處理的了,貌似用round四捨五入來著
php浮點數的精度
浮點數的精度
浮點數的精度有限。盡管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行復合運算時的誤差傳遞。
此外,以十進制能夠精確表示的有理數如 0.1 或 0.7,無論有多少尾數都不能被內部所使用的二進制精確表示,因此不能在不丟失一點點精度的情況下轉換為二進制的格式。這就會造成混亂的結果:例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似 7.9999999999999991118…。
所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數或者 gmp 函數。
上已經講了解決方法是用任意精度數學函數或者 gmp 函數,具體用什麼函數還是看官方文檔
⑧ PHP中怎麼限制浮點型數據的精確度
round
(PHP 3, PHP 4, PHP 5)
round -- 對浮點數進行四捨五入
float round ( float val [, int precision] )
返回將 val 根據指定精度 precision(十進制小數點後數字的數目)進行四捨五入的結果。precision 也可以是負數或零(默認值)。
例子 1. round() 例子
<?php
echo round(5.045, 2); // 5.05
echo round(5.055, 2); // 5.06
?>
要設置為3位數的話不用說了吧
round($num,3);
⑨ 判斷浮點型數據的值相等的問題.php問題.
每個浮點數沒有具體准確值,都只有準確的范圍。
所以比較是在比較范圍。
如果你的精確度是小數點後2位。(比較不精確但為說明問題)
//原來的$a==$b
if($a>=$b+0.005&&$a<$b+0.005)
0.005就是允許的誤差。
可以改成
$e=0.00001;//允許的誤差值,剛剛的0.005,換成更精確0.00001
if(abs($a-$b)<$e){
//a,b相等
}
誤差值e要根據數據整體分布范圍定,如果太精確,超過雙精度表示範圍,就容易出誤判。
即范圍不能超過甚至不能接近浮點數約15~16個有效十進制數字的最低位的數量級..
⑩ 請問在PHP中《 數據類型、浮點數、字元串、數組和對象》。是什麼意思,誰能幫我解釋一下
數值類型可以是整數或是浮點數。你可以用以下的語句來為一個數值賦值:
$a = 1234; # 十進制數
$a = -123; # 負數
$a = 0123; # 八進制數 (等於十進制數的83)
$a = 0x12; # 十六進制數(等於十進制數的18)
$a = 1.234; # 浮點數"雙精度數"
$a = 1.2e3; # 雙精度數的指數形式
字元串
字元串可以由單引號或雙引號引出的欄位定義。注意不同的是被單引號引出的字元串是以字面定義的,而雙引號引出的字元串可以被擴展。而且,在雙引號字元串中可以使用反斜杠(\)在字元串中加入轉義序列與轉換字元。舉例如下:
$first = hello;
$second = "world";
$full1 = "$first $second"; # 產生 hello world
$full2 = $first $second;# 產生 $first $second
$full3="01dc studio,\." 2000 right.\" " ;
請注意最後一行,如果需要在字元串中使用雙引號,可以使用反斜杠字元,象該行語句所示。這里的的反斜杠用來使雙引號的功能改變。
可以將字元與數字利用運算符號連接起來。字元被轉化成數字,利用其最初位置。在php手冊中有詳細的例子。
數組與哈希表
數組與哈希表以同樣的方法被支持。怎樣運用取決於你怎樣定義它們。你可以用list()或者array()來定義它們,也可以直接為數組賦值。數組的索引從0開始。雖然我在這里沒有說明,但是你一樣可以輕易的使用多維數組。
// 一個包含兩個元素的數組
$a[0] = "first";
$a[1] = "second";
$a[] = "third"; // 添加數組元素的簡單方法
// 現在$a[2]被賦值為"third"
echo count($a); // 列印出3,因為該數組有3個元素
// 用一個語句定義一個數組並賦值
$myphonebook = array (
"sbabu" =$#@62; "5348",
"keith" =$#@62; "4829",
"carole" =$#@62; "4533"
);
// 噢,忘了教長吧,讓我們添加一個元素
$myphonebook["dean"] = "5397";