PHP高精确度运算BC函数库实例详解

七月 27, 2019 | views
Comments 0

  1. <?php 
  2.  /*************************************************************************************** 
  3.  *php BC高精确度函数库 
  4.  *php bc math 包含了:相加,比较,相除,相减,求余,相乘,n次方,配置默认小数点数目,求平方 
  5.  *这些函数在涉及到有关金钱的计算时比较有用 
  6.  *************************************************************************************** 
  7.  *两个高精度数比较 
  8.  *工作中遇到一种情况,0.00 != 0 
  9.  *int bccomp ( string $left_operand , string $right_operand [, int $scale ] ) 
  10.  *$left=$right 返回 0 
  11.  *$left<$right 返回 -1 
  12.  *$left>$right 返回 1 
  13.  *$scale 小数点位数 
  14.  ***************************************************************************************/ 
  15. $a = 4.45; 
  16. $b = 5.54; 
  17. if(bccomp($a$b, 2) == 0) 
  18. /*************************************************************************************** 
  19.  *两个高精度数相加 
  20.  *string bcadd ( string $left_operand , string $right_operand [, int $scale ] ) 
  21.  *$scale 返回的小数点个数 
  22.  ***************************************************************************************/ 
  23. $a = 1.0321456; 
  24. $b = 0.0123456; 
  25. $c = bcadd($a$b, 2); 
  26. //var_dump($c); 
  27. /*************************************************************************************** 
  28.  *两个高精度数相减 
  29.  *sstring bcsub ( string $left_operand , string $right_operand [, int $scale ] ) 
  30.  *$scale 返回的小数点个数 
  31.  ***************************************************************************************/ 
  32. $a = 1.0321456; 
  33. $b = 3.0123456; 
  34. $c = bcsub($a$b, 2); 
  35. var_dump($c); 
  36. /******************************************************** 
  37.  *两个高精度数求余/取模 
  38.  *string bcmod ( string $left_operand , string $modulus ) 
  39.  *******************************************************/ 
  40. $a = 6; 
  41. $b = 4; 
  42. $c = bcmod($a$b); 
  43. //var_dump($c); 
  44. /*************************************************************************************** 
  45.  *两个高精度数相除 
  46.  *string bcdiv ( string $left_operand , string $right_operand [, int $scale ] ) 
  47.  *$scale小数点位数默认为 0 
  48.  ***************************************************************************************/ 
  49.  $a = 6; 
  50.  $b = 5; 
  51.  $c = bcdiv($a$b, 3); 
  52.  //var_dump($c); 
  53. /*************************************************************************************** 
  54.  *两个高精度数相乘 
  55.  *string bcmul ( string $left_operand , string $right_operand [, int $scale ] ) 
  56.  *$scale小数点位数默认为 0 
  57.  ***************************************************************************************/ 
  58. $a = 3.1415926; 
  59. $b = 2.4569874566; 
  60. $c = bcmul($a$b, 6); 
  61. //var_dump($c); 
  62. /*************************************************************************************** 
  63.  *两个高精度数的次方值 
  64.  *string bcpow ( string $left_operand , string $right_operand [, int $scale ] ) 
  65.  *$scale小数点位数默认为 0 
  66.  ***************************************************************************************/ 
  67. $a = 3.1415926; 
  68. $b = 2; 
  69. $c = bcpow($a$b, 3); 
  70. //var_dump($c); 
  71. /************************************************** 
  72.  *求高精度数的平方根 
  73.  *string bcsqrt ( string $operand [, int $scale ] ) 
  74.  *$scale小数点位数默认为 0 
  75.  ***************************************************/ 
  76. $b = bcsqrt($a, 6); 
  77. //var_dump($b); 
  78. /****************************** 
  79.  *设置bc函数的小数点位数 
  80.  *bool bcscale ( int $scale ) 
  81.  *$scale小数点位数默认为 0 
  82.  ******************************/ 
  83. //bcscale(); 
  84. ?> 



zend