bcsub

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

bcsubResta un número de precisión arbitraria de otro

Descripción

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

Resta num2 de num1.

Parámetros

num1

El operador izquierdo, como una cadena.

num2

El operador derecho, como una cadena

scale
Este parámetro se utiliza para establecer el número de dígitos después del punto decimal en el resultado. Si es null, se establecerá por defecto en la escala predeterminada establecida con bcscale(), o se utilizará el valor de la directiva INI bcmath.scale.

Valores devueltos

El resultado de la resta, como un string.

Errores/Excepciones

Esta función lanza una excepción ValueError en los siguientes casos:

  • num1 o num2 no es una cadena numérica bien formada de BCMath.
  • scale está fuera del rango válido.

Historial de cambios

Versión Descripción
8.0.0 scale ahora es nullable.

Ejemplos

Ejemplo #1 Ejemplo de bcsub()

<?php

$a
= '1.234';
$b = '5';

echo
bcsub($a, $b); // -3
echo bcsub($a, $b, 4); // -3.7660

?>

Ver también

  • bcadd() - Suma dos números de precisión arbitrária
  • BcMath\Number::sub()

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