一、概述
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-tw/n/311303.html