PHP Conference Japan 2024

bccomp

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

bccomp比较两个任意精度的数字

描述

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

比较num1num2,并将比较结果作为整数返回。

参数

num1

左操作数,字符串。

num2

右操作数,字符串。

scale
此参数用于设置结果中小数点后的位数。如果为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 这样的 E 表示法的数字需要使用 sprintf('%F') 转换为字符串。
m dot kaczanowski at alianet dot pl
15 年前
改进由 frank at booksku dot com 编写的 bcmax() 和 bcmin() 函数

<?php

function 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;
}

function
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