Home  >  Article  >  Backend Development  >  How to prevent numbers from being displayed in scientific notation using PHP's super-long (extra-large) number operations_php tips

How to prevent numbers from being displayed in scientific notation using PHP's super-long (extra-large) number operations_php tips

WBOY
WBOYOriginal
2016-05-16 19:55:142123browse

The example in this article describes how PHP uses overlong (overlarge) number operations to prevent numbers from being displayed in scientific notation. Share it with everyone for your reference, the details are as follows:

PHP will make errors when calculating large numerical operations. When the number is too large, the value will become scientific notation. So how to perform large numerical operations in PHP, including addition, subtraction, multiplication, division, power operations, square roots, and modulo operations?

To solve the problem of scientific notation, just add a pair of quotation marks when assigning values.

For example:

<&#63;php
$n = '22222222222222222222222222220';
echo $n;
&#63;>

Without quotation marks, it displays 2.2222222222222E 28. With quotation marks, it displays 22222222222222222222222222220

Extremely large numerical operations, including addition, subtraction, multiplication and division, power operations, square roots, and modular operations.

Use PHP’s bcmath function to create a custom function, the code is as follows,

<&#63;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');
&#63;>

How to use:

calc(parameter 1 parameter 2, parameter 3);
Parameter 3 specifies the operation method: add, sub, mul, div, pow, mod, sqrt to find the arithmetic square root
Addition, subtraction and division: Parameter 1 Add/Subtract/Multiply/Divide Parameter 2
Power: parameter 1 raised to the power of parameter 2.
Modulo: the remainder obtained by dividing parameter 1 by parameter 2.
Arithmetic square root: Find the arithmetic square root of parameter 1. Parameter 2 has no effect, but cannot be omitted.

Readers who are interested in more PHP-related content can check out the special topics on this site: "Summary of PHP operations and operator usage", "Summary of PHP network programming skills", " Introductory tutorial on PHP basic syntax", "Summary of PHP office document operation skills (including word, excel, access, ppt)", "Summary of PHP date and time usage》, "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" And "Summary of common database operation skills in PHP"

I hope this article will be helpful to everyone in PHP programming.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn