A. php與mysql的float類型的精度是分別怎麼樣的
對於單精度浮點數Float: 當數據范圍在±131072(65536×2)以內的時候,float數據精度是正確的,但是超出這個范圍的數據就不穩定,沒有發現有相關的參數設置建議:將float改成double或者decimal,兩者的差別是double是浮點計算,decimal是定點計算,會得到更精確的數據。
1.float類型
float列類型默認長度查不到結果,必須指定精度,
比如 num float, insert into table (num) values (0.12); select * from table where num=0.12的話,empty set。
B. php 字元串0.01124怎麼轉換成浮點型不失精度
使用(float)強轉即可:
<?php
$str='0.01124';
$num=(float)$str;
var_mp($num);
/*
float(0.01124)
*/
C. 請教,php保留兩位小數,但不四捨五入
$n=123.456789;
echofloor($n*100)/100;
D. 用PHP的循環進行數字計算時候遇到的問題
變數的類型不一樣吧
10是一個整型數
而0.01是浮點型的
兩個不同類型的變數相加會丟失精度
因為簡單的十進制分數如同 0.1 或 0.7 不能在不丟失一點點精度的情況下轉換為內部二進制的格式。這就會造成混亂的結果:例如,floor((0.1+0.7)*10) 通常會返回 7 而不是預期中的 8,因為該結果內部的表示其實是類似 7.9999999999...。
這和一個事實有關,那就是不可能精確的用有限位數表達某些十進制分數。例如,十進制的 1/3 變成了 0.3333333. . .。
所以永遠不要相信浮點數結果精確到了最後一位,也永遠不要比較兩個浮點數是否相等。如果確實需要更高的精度,應該使用任意精度數學函數庫或者 gmp 函數庫。
E. PHP 裡面 (string)$num 和 strval($num)的 區別
表面看著沒有區別
但是在精度計算上就體現出來了
比如 $num = 5.2*100;
如果單純存儲數據沒有區別 如果你進行資料庫運算查詢的時候兩個就完全有區別了
比如你資料庫欄位上有一個欄位類型為int num 值為 520
這時你會發現用(string)$num查詢是查詢不到信息 但是用 strval($num)這時絕對可以查詢出來
F. php如何處理高精度計算函數
網路查一下「BC 高精確度函數庫」
注意:要使用 BC 這個函數庫,要在編譯 PHP 程序時加入 --enable-bcmath 的選項。
G. php裡面bcadd是什麼意思
PHP 為任意精度數學計算提供了二進制計算器(Binary Calculator),它支持任意大小和精度的數字,以字元串形式描述
bcadd — 加法
bccomp — 比較
bcdiv — 相除
bcmod — 求余數
bcmul — 乘法
bcpow — 次方
bcpowmod — 先次方然後求余數
bcscale — 給所有函數設置小數位精度
bcsqrt — 求平方根
bcsub — 減法
H. php中3個小數的計算,如134.7-52.5 - 82.2,為什麼結果不是0而是一個奇怪的科學計數法
樓上的回答很詳細了,而且,這不僅僅是php的問題,你在js里console.log(134.7-52.5 - 82.2)
也得不到0的,
I. php兩個浮點數相乘該怎麼計算
浮點數相乘:先計算再求精度。
如(取五位精度);
<?php
$a=12.3345667;
$b = 0.987654321;
$c=$a*$b;
$d=number_format($c,5,'.',',');
echo $d;
// $d=12.18229
J. php中如何計算圓的面積且保留兩位小數
PHP 中的 round() 函數可以實現
round() 函數對浮點數進行四捨五入。
round(x,prec)
參數說明
x 可選。規定要舍入的數字。
prec 可選。規定小數點後的位數。
返回將 x 根據指定精度 prec (十進制小數點後數字的數目)進行四捨五入的結果。prec 也可以是負數或零(默認值)。
注釋:PHP 默認不能正確處理類似 "12,300.2" 的字元串。
例如:
輸出: -4.64