本文實例講述了PHP采用超長(超大)數字運算防止數字以科學計數法顯示的方法。分享給大家供大家參考,具體如下:
PHP計算大數值運算時會出錯,當數字太大時,數值會變成科學計數.那怎么來進行PHP超大數值運算,包括加減乘除,冪運算,平方根,取模運算呢?
要解決科學計數的問題,只要賦值時加一對引號即可.
如:
1
2
3
4
|
<?php $n = '22222222222222222222222222220' ; echo $n ; ?> |
如果不加引號,顯示2.2222222222222E+28,加引號后顯示22222222222222222222222222220
超大數值運算,包括加減乘除,冪運算,平方根,取模運算.
使用PHP的bcmath函數創(chuàng)建一個自定義函數,代碼如下,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<?php function calc( $m , $n , $x ){ $errors = array ( '被除數不能為零' , '負數沒有平方根' ); switch ( $x ){ case 'add' : $t = bcadd ( $m , $n ); break ; case 'sub' : $t =bcsub( $m , $n ); break ; case 'mul' : $t = bcmul ( $m , $n ); break ; case 'div' : if ( $n !=0){ $t = bcdiv ( $m , $n ); } else { return $errors [0]; } break ; case 'pow' : $t =bcpow( $m , $n ); break ; case 'mod' : if ( $n !=0){ $t = bcmod ( $m , $n ); } else { return $errors [0]; } break ; case 'sqrt' : if ( $m >=0){ $t =bcsqrt( $m ); } else { return $errors [1]; } break ; } $t =preg_replace( "/\..*0+$/" , '' , $t ); return $t ; } /*用法舉例*/ echo calc( '11111111111111111111111111111111110' , '10' , 'add' ); ?> |
使用方法:
calc(參數1參數2,參數3);
參數3指定運算方法:add加,sub減,mul乖,div除,pow冪,mod取模,sqrt求算術平方根
加減乖除:參數1 加上/減去/乘以/除以 參數2
冪:參數1 的 參數2 次方.
模:參數1 除以 參數2 得到的余數.
算術平方根:求 參數1 的算術平方根.參數2不起作用,但不能省略.
希望本文所述對大家PHP程序設計有所幫助。