The parameter order here is probably fairly obvious to most people (subtract right from left), but to clarify with a simple use case since I was struggling with this at the end of a long day:
<?php
echo bcsub('7', '5'); // 7 - 5 = '2'
echo bcsub('12', '17'); // 12 - 17 = '-5'
?>
Provide the parameters in the same order you would when using a normal subtraction operator.bcsub
(PHP 4, PHP 5, PHP 7, PHP 8)
bcsub — Subtract one arbitrary precision number from another
Description
Subtracts num2 from num1.
Parameters
num1-
The left operand, as a string.
num2-
The right operand, as a string.
scale-
This parameter is used to set the number of digits after the decimal place in the result.
If
null, it will default to the default scale set with bcscale(), or fallback to the value of thebcmath.scaleINI directive.
Return Values
The result of the subtraction, as a string.
Errors/Exceptions
This function throws a ValueError in the following cases:
-
num1ornum2is not a well-formed BCMath numeric string. -
scaleis outside the valid range.
Changelog
| Version | Description |
|---|---|
| 8.0.0 |
scale is now nullable.
|
Examples
Example #1 bcsub() example
<?php
$a = '1.234';
$b = '5';
echo bcsub($a, $b); // -3
echo bcsub($a, $b, 4); // -3.7660
?>See Also
- bcadd() - Add two arbitrary precision numbers
- BcMath\Number::sub() - Subtracts an arbitrary precision number
+add a note
User Contributed Notes 2 notes
nd at snackbox dot org ¶
8 years ago
charles dot adrian dot wood at gmail dot com ¶
7 years ago
Please note that bcsub will fail in non-obvious ways if it's fed something that cannot be converted to a number. For instance:
bcsub('yes', 'no') === '0'
Yes, if you put garbage in, you get garbage out. Just don't expect bcsub to throw an error when you feed it an entirely non-numeric value.