系統的講解 PHP 浮點數高精度運算

2021-09-25 23:46:18 字數 2149 閱讀 5931

//加	

$a = 0.1;

$b = 0.7;

$c = intval(($a + $b) * 10);

echo $c."

"; //輸出:7

//減

$a = 100;

$b = 99.98;

$c = $a - $b;

echo $c."

"; //輸出:0.019999999999996

//乘

$a = 0.58;

$b = 100;

$c = intval($a * $b);

echo $c."

"; //輸出:57

//除

$a = 0.7;

$b = 0.1;

$c = intval($a / $b);

echo $c."

"; //輸出:6

//加	

$a = 0.1;

$b = 0.7;

$c = intval(bcadd($a, $b, 1) * 10);

echo $c."

"; //輸出:8

//減

$a = 100;

$b = 99.98;

$c = bcsub($a, $b, 2);

echo $c."

"; //輸出:0.02

//乘

$a = 0.58;

$b = 100;

$c = intval(bcmul($a, $b));

echo $c."

"; //輸出:58

//除

$a = 0.7;

$b = 0.1;

$c = intval(bcdiv($a, $b));

echo $c."

"; //輸出:7

捨去法取整(向下取整)
echo floor(5.1);	

//輸出:5

echo floor(8.8);

//輸出:8

進一法取整(向上取整)
echo ceil(5.1);	

//輸出:6

echo ceil(8.8);

//輸出:9

普通四捨五入法
echo round(5.1);	

//輸出:5

echo round(8.8);

//輸出:9

//保留兩位小數並且進行四捨五入

echo round(5.123, 2);

//輸出:5.12

echo round(8.888, 2);

//輸出:8.89

//保留兩位小數並且不進行四捨五入

echo substr(round(5.12345, 3), 0, -1);

//輸出:5.12

echo substr(round(8.88888, 3), 0, -1);

//輸出:8.88

銀行家捨入法
echo round(1.2849, 2, php_round_half_even);	

//輸出:1.28

echo round(1.2866, 2, php_round_half_even);

//輸出:1.29

echo round(1.2851, 2, php_round_half_even);

//輸出:1.29

echo round(1.2850, 2, php_round_half_even);

//輸出:1.28

echo round(1.2750, 2, php_round_half_even);

//輸出:1.28

數值格式化(千位分組)
echo number_format('10000.98', 2, '.', ',');	

//輸出:10,000.98

echo number_format('340888999', 2, '.', ',');

//輸出:340,888,999.00

mysql 浮點型字段

PHP 浮點數高精度運算

記錄下,工作中遇到的坑 關於 php 浮點數運算,特別是金融行業 電子商務訂單管理 資料包表等相關業務,利用浮點數進行加減乘除時,稍不留神運算結果就會出現偏差,輕則損失幾十萬,重則會有信譽損失,甚至吃上官司,我們一定要引起高度重視!加 a 0.1 b 0.7 c intval a b 10 echo...

PHP 浮點數的精度

浮點數的精度有限。儘管取決於系統,php 通常使用 ieee 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e 16。非基本數 算可能會給出更大誤差,並且要考慮到進行復合運算時的誤差傳遞。此外,以十進位制能夠精確表示的有理數如 0.1 或 0.7,無論有多少尾數都不能被內部所使用的二...

js高精度浮點數運算

貼 自定義高精度浮點數運算 物件格式寫法 var float calculator catch e m math.pow 10,math.max r1,r2 計算因子 return arg1 m arg2 m m minus function arg1,arg2 mul function arg1,...