2024 年 PHP Conference Japan

bccomp

(PHP 4, PHP 5, PHP 7, PHP 8)

bccomp比較兩個任意精度數字

說明

bccomp(字串 $num1, 字串 $num2, ?整數 $scale = null): 整數

比較 num1num2 並以整數形式返回比較結果。

參數

num1

左側運算元,以字串表示。

num2

右運算元,以字串表示。

小數位數
此參數用於設定結果中小數點後的小數位數。如果是 null,它將預設為使用 bcscale() 設定的預設小數位數,或回退到 bcmath.scale INI 指令的值。

返回值

如果兩個運算元相等,則返回 0;如果 num1 大於 num2,則返回 1;否則返回 -1

錯誤/例外

此函式在以下情況下會拋出 ValueError

  • num1num2 不是格式正確的 BCMath 數字字串。
  • scale 超出有效範圍。

更新日誌

版本 說明
8.0.0 scale 現在可以為 null。

範例

範例 #1 bccomp() 範例

<?php

echo bccomp('1', '2') . "\n"; // -1
echo bccomp('1.00001', '1', 3); // 0
echo bccomp('1.00001', '1', 5); // 1

?>
新增註釋

使用者貢獻的註釋 3 則註釋

Robert Lozyniak
14 年前
注意,負零與正零不相等。
aaugrin at gmail dot com
6 年前
注意!左運算元和右運算元都是字串!!因此,像 9.012E-6 這樣的科學記數法數字需要用 sprintf('%F') 轉換為字串
m dot kaczanowski at alianet dot pl
15 年前
改進了由 frank at booksku dot com 撰寫的 bcmax() 和 bcmin() 函式

<?php

函式 bcmax() {
$args = func_get_args();
if (
count($args)==0) return false;
$max = $args[0];
foreach(
$args as $value) {
if (
bccomp($value, $max)==1) {
$max = $value;
}
}
return
$max;
}

函式
bcmin() {
$args = func_get_args();
if (
count($args)==0) return false;
$min = $args[0];
foreach(
$args as $value) {
if (
bccomp($min, $value)==1) {
$min = $value;
}
}
return
$min;
}
?>
To Top