>  기사  >  백엔드 개발  >  부동 소수점 숫자, 정밀 연산, 숫자 처리 등을 처리하기 위해 PHP를 구문 분석합니다.

부동 소수점 숫자, 정밀 연산, 숫자 처리 등을 처리하기 위해 PHP를 구문 분석합니다.

藏色散人
藏色散人앞으로
2021-05-14 11:46:475987검색

이 글에서는 PHP의 부동 소수점 숫자 처리, 정밀 연산, 숫자 처리 등에 대해 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

서문

1. PHP 부동 소수점 형식 숫자 특히 금융업, 전자상거래 주문, 쇼핑몰 프로젝트에서는 주의하지 않으면 편차가 발생할 수 있습니다.

2. 부동 소수점 숫자는 정밀도가 제한되어 있습니다. 시스템에 따라 다르지만 PHP는 일반적으로 IEEE 754 이중 형식을 사용하므로 반올림으로 인한 최대 상대 오차는 1.11e-16입니다. 기본이 아닌 수학 연산은 더 큰 오류를 초래할 수 있으므로 복합 연산을 수행할 때 오류 전파를 고려해야 합니다. 부동 소수점 결과를 마지막 숫자까지 신뢰하지 말고 두 개의 부동 소수점 숫자가 같은지 비교하지 마십시오. 정말로 더 높은 정밀도가 필요한 경우 임의 정밀도 수학 함수나 gmp 함수를 사용해야 합니다.

一. Operations

Error

 //加
 $a = 0.1; $b = 0.7; $c = intval(($a + $b) * 10); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:7
     //减
 $a = 100; $b = 99.98; $c = $a - $b; echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:0.019999999999996
     //乘
 $a = 0.58; $b = 100; $c = intval($a * $b); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:57
     //除
 $a = 0.7; $b = 0.1; $c = intval($a / $b); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:6

Correct

1. PHP는 문자열로 표현되는 모든 크기와 정밀도의 숫자를 지원하는 이진 계산을 제공합니다.
2. 공식 매뉴얼: php.net/manual/zh/book.bc.php
3. 사용하기 전에 bcmath가 설치되어 있는지 확인하세요.

 //加
 $a = 0.1; $b = 0.7; $c = intval(bcadd($a, $b, 1) * 10); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:8
     //减
 $a = 100; $b = 99.98; $c = bcsub($a, $b, 2); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:0.02
     //乘
 $a = 0.58; $b = 100; $c = intval(bcmul($a, $b)); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:58
     //除
 $a = 0.7; $b = 0.1; $c = intval(bcp($a, $b)); echo $c."0c6dc11e160d3b678d68754cc175188a"; //输出:7

bcmath는 덧셈, 곱셈, 나눗셈 외에도 다음과 같은 방법을 제공합니다.

1 bccomp는 두 개의 임의 정밀도 숫자를 비교합니다.
2 bcmod는 임의 정밀도 숫자를 올립니다. 임의 정밀도 숫자의 거듭제곱
4. bcpowmod는 고정밀 숫자의 거듭제곱
5. bcscale은 모든 bc 수학 함수에 대한 기본 소수점 유지 자리를 설정합니다
6. bcsqrt는 모든 정밀도 숫자의 제곱근입니다. 2. 일반적으로 사용되는 수치 처리 솔루션

반올림(내림)
echo floor(5.1);
//输出:5

echo floor(8.8);
//输出:8

1로 반올림(반올림)

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

뱅커의 반올림 방법

1. 마지막 5개가 비어 있지 않으면 1씩 진행합니다. 마지막 5개가 비어 있으면 홀수 또는 짝수를 찾습니다. 처음 5개가 홀수이면 버려야 합니다. .

2. 소수점 이하 두 자리를 유지합니다. 예:

 1.2849 = 1.28 -> 四舍
 1.2866 = 1.29 -> 六入
 1.2851 = 1.29 -> 五后非空就进一
 1.2850 = 1.28 -> 五后为空看奇偶,五前为偶应舍去
 1.2750 = 1.28 -> 五后为空看奇偶,五前为奇要进一

숫자 형식(천 단위)

1. 우리가 자주 보는 은행 카드 잔액 등의 금액 표시에 적용됩니다.

 echo number_format('10000.98', 2, '.', ','); //输出:10,000.98
     echo number_format('340888999', 2, '.', ',');
 //输出:340,888,999.00

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 부동 소수점 숫자, 정밀 연산, 숫자 처리 등을 처리하기 위해 PHP를 구문 분석합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제