---
title: "Aritmetika a porovnávanie — Money for Laravel | Roundly"
description: "Aritmetika v rámci jednej meny, ktorá zaokrúhľuje presne raz, hotovostné zaokrúhlenie, presné porovnania a súčet, minimum, maximum a priemer."
url: https://roundly-consulting.com/sk/open-source/navody/money-for-laravel/aritmetika
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Money for Laravel](https://roundly-consulting.com/sk/open-source/navody/money-for-laravel.md)

# Aritmetika a porovnávanie

Aritmetika a porovnávanie fungujú v rámci jednej meny — miešanie mien vyhodí CurrencyMismatch a prevod je vždy samostatný, explicitný krok. Bezstratové operácie nikdy nezaokrúhľujú; stratové zaokrúhlia presne raz, predvolene RoundingMode::HalfAwayFromZero:

```php
$price = Money::ofMajor('19.99', 'EUR');
$fee   = Money::ofMinor(250, 'EUR');

$total = $price->add($fee)->multiply(3);   // 67.47 EUR, exact
$net   = $total->subtract($fee);           // 64.97 EUR
$vat   = $total->percentage('20');         // 13.49 EUR — one rounding, HalfAwayFromZero
$net->multiply('1.19');                    // 77.31 EUR — a decimal factor rounds once
$total->divide(4);                         // 16.87 EUR
Money::ofMajor('10.03', 'CHF')->roundTo(5); // 10.05 CHF — 5-Rappen cash rounding
$total->negate();                          // -67.47 EUR
$total->negate()->abs();                   // 67.47 EUR

$total->add(Money::ofMajor('1', 'USD'));   // throws CurrencyMismatch
```

- add() / subtract() — variadické, presné, nikdy nezaokrúhľujú.
- multiply($factor, $rounding) — celočíselný násobok je presný; desatinný reťazec ('1.19') alebo Ratio zaokrúhli raz.
- divide($divisor, $rounding) — zaokrúhli raz; delenie nulou vyhodí DivisionByZero.
- percentage($percent, $rounding) — suma × p / 100, zaokrúhlené raz.
- roundTo($minorIncrement, $rounding) — hotovostné zaokrúhlenie na násobok kroku, napr. roundTo(5) pre švajčiarske 5-rappenové kroky.
- negate() / abs() — nikdy nezaokrúhľujú.

Násobky a delitele musia byť obyčajné desatinné alebo celé čísla — '1e3', '1,5' či ' 2' vyhodia InvalidAmount. Výsledky sú obmedzené na 65 číslic.

## Porovnávanie

```php
$a = Money::ofMajor('50', 'EUR');
$b = Money::ofMajor('67.47', 'EUR');

$b->isGreaterThan($a);                    // true
$b->isGreaterThanOrEqualTo($a);           // true
$a->isLessThan($b);                       // true
$a->isLessThanOrEqualTo($b);              // true
$a->compareTo($b);                        // -1
$a->equals(Money::ofMinor(5000, 'EUR'));  // true
$a->equals(Money::ofMajor('50', 'USD'));  // false — equals() never throws
$a->isSameCurrency($b);                   // true
$a->isZero(); $a->isPositive(); $a->isNegative();

$a->isGreaterThan(Money::ofMajor('1', 'USD')); // throws CurrencyMismatch
```

equals() porovnáva sumu, kód meny aj exponent a nikdy nevyhodí výnimku. Každá metóda na usporiadanie vyhodí pri rôznych menách CurrencyMismatch. Porovnania bežia nad kanonickými reťazcami — bez bcmath, bez floatu.

## Agregácie

```php
$prices = [
    Money::ofMajor('10', 'EUR'),
    Money::ofMajor('25.50', 'EUR'),
    Money::ofMajor('4.99', 'EUR'),
];

Money::sum($prices);                        // 40.49 EUR
Money::sum([], currencyIfEmpty: 'EUR');     // 0.00 EUR
Money::min($prices);                        // 4.99 EUR
Money::max($prices);                        // 25.50 EUR
Money::average($prices);                    // 13.50 EUR — rounded once
```

sum() prázdneho zoznamu potrebuje currencyIfEmpty, inak vyhodí EmptyMoneyCollection — rovnako ako min(), max() a average() bez prvkov. Položky, ktoré nie sú Money, vyhodia InvalidMoneyValue; zmiešané meny vyhodia CurrencyMismatch.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/money-for-laravel.md)
