bcsub

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

bcsub β€” Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ число ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ точности ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ

ОписаниС

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

Ѐункция Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ число num2 ΠΈΠ· числа num1.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

num1

Π›Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (слагаСмоС) Π² Π²ΠΈΠ΄Π΅ строки.

num2

ΠŸΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (слагаСмоС) Π² Π²ΠΈΠ΄Π΅ строки.

scale
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для установки количСства Ρ†ΠΈΡ„Ρ€ послС дСсятичного Π·Π½Π°ΠΊΠ° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅. Если установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ установлСн ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bcscale() ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ INI-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ bcmath.scale.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ строки.

Ошибки

Ѐункция выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ValueError Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° num1 ΠΈΠ»ΠΈ num2 оказалось строкой, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ сформировали Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния допустимого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° числовых строк Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ BCMath.
  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° scale Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

Бписок измСнСний

ВСрсия ОписаниС
8.0.0 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ scale Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ вычитания чисСл ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ точности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ bcsub()

<?php

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

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

?>

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • bcadd() - Π‘ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° числа ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ точности
  • BcMath\Number::sub() - Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· числа ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ точности
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 2 notes

up
7
nd at snackbox dot org ΒΆ
8 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 ΒΆ
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.