一、概述
bccomp() 函數用於比較兩個任意精度的數字。這個函數的返回值是:當第一個參數大於第二個參數返回 1,當第一個參數小於第二個參數返回 -1,並在兩個參數相等時返回 0。
二、語法
int bccomp(string $left_operand, string $right_operand[, int $scale = 0])
參數說明:
- left_operand:左操作數,為字符串型。
- right_operand:右操作數,為字符串型。
- scale:可選參數,為比較時使用的小數點後精度。
三、返回值
函數返回值:
- 當 left_operand > right_operand 時,返回 1;
- 當 left_operand < right_operand 時,返回 -1;
- 當 left_operand = right_operand 時,返回 0。
四、使用示例1:比較兩個整數
$number1 = "12345678901234567890";
$number2 = "98765432109876543210";
if (bccomp($number1, $number2) 0) {
echo "$number1 is greater than $number2";
} else {
echo "$number1 is equal to $number2";
}
輸出結果為:「12345678901234567890 is less than 98765432109876543210」。
五、使用示例2:比較兩個帶小數點的數字
$number1 = "1.234567890123456789";
$number2 = "9.876543210987654321";
if (bccomp($number1, $number2, 8) 0) {
echo "$number1 is greater than $number2";
} else {
echo "$number1 is equal to $number2";
}
輸出結果為:「1.23456789 is less than 9.87654321」,比較時只考慮兩個數字的小數點後8位。
六、使用示例3:比較兩個數字的大小關係
// 比較兩個數字的大小關係
function compareNumbers($num1, $num2) {
$result = bccomp($num1, $num2);
if ($result 0) {
echo "$num1 is greater than $num2";
} else {
echo "$num1 is equal to $num2";
}
}
$num1 = "123.456";
$num2 = "234.567";
compareNumbers($num1, $num2);
輸出結果為:「123.456 is less than 234.567」。
七、使用示例4:比較兩個數字的大小關係(支持科學計數法)
// 比較兩個數字的大小關係(支持科學計數法)
function compareNumbers($num1, $num2) {
$num1 = sprintf('%.10E', $num1);
$num2 = sprintf('%.10E', $num2);
$result = bccomp($num1, $num2, 10);
if ($result 0) {
echo "$num1 is greater than $num2";
} else {
echo "$num1 is equal to $num2";
}
}
$num1 = 1.23456E+20;
$num2 = 9.87654E+21;
compareNumbers($num1, $num2);
輸出結果為:「1.2345600000E+20 is less than 9.8765400000E+21」。
八、注意事項
bccomp() 函數只能比較任意精度的數字,如果要比較普通的數字,可以使用 PHP 的普通比較運算符(例如:”>”, “=”, “<=", "==", "!=")。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/311303.html
微信掃一掃
支付寶掃一掃