PHP 8.4.0 RC2 available for testing

bcsub

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

bcsubSubtract one arbitrary precision number from another

Description

bcsub(string $num1, string $num2, ?int $scale = null): string

Subtracts the num2 from the num1.

Parameters

num1

The left operand, as a string.

num2

The right operand, as a string.

scale

This optional parameter is used to set the number of digits after the decimal place in the result. If omitted, it will default to the scale set globally with the bcscale() function, or fallback to 0 if this has not been set.

Return Values

The result of the subtraction, as a string.

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

add a note

User Contributed Notes 2 notes

up
7
nd at snackbox dot org
6 years ago
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.
up
0
charles dot adrian dot wood at gmail dot com
5 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.
To Top