---
title: "Sumy a presnosť — Money for Laravel | Roundly"
description: "Kanonická celočíselná gramatika, pevné limity, most na int64 a správanie peňažných stĺpcov v PostgreSQL, MySQL a SQLite."
url: https://roundly-consulting.com/sk/open-source/navody/money-for-laravel/presnost-sum
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)

# Sumy a presnosť

Suma v najmenších jednotkách je vždy kanonický celočíselný reťazec: 0 alebo voliteľné mínus a najviac 65 platných číslic (Money::MAX\_DIGITS) — bez znamienka plus, úvodných núl, medzier, bodky či exponentu. minor() vracia vždy len túto gramatiku.

```php
$big = Money::ofMinor('123456789012345678901234567890', 'EUR');

$big->digits();      // 30
$big->fitsInt();     // false
$big->minorInt();    // throws AmountOverflow — no silent (int) path

// Never compare raw minors in PHP: numeric strings go through float above int64
$a->minor() > $b->minor();   // unreliable for large amounts
$a->isGreaterThan($b);       // always exact

Money::ofMinor('007', 'EUR')->minor();   // "7" — normalized on entry
Money::ofMinor('5.0', 'EUR');            // throws InvalidAmount — minors are integers
```

- Surové sumy nikdy nepretypujte cez (int) ani neporovnávajte v PHP — PHP porovnáva číselné reťazce nad int64 cez floaty. Použite porovnávacie metódy Money.
- minorInt() je jediný most na int; mimo int64 vyhodí AmountOverflow a fitsInt() vám to povie vopred.
- JSON prenáša minor ako reťazec: JavaScript poškodí JSON číslo nad 2⁵³.
- Celočíselné vstupy sa pri vstupe normalizujú („007“ → „7“, „-0“ → „0“); „+5“, „ 5“, „5.0“ a „5e3“ vyhodia InvalidAmount.

## Limity

| Hranica | Hodnota | Výnimka |
| --- | --- | --- |
| Číslice najmenších jednotiek v pamäti | 65 | `AmountOverflow` |
| Číslice desatinného vstupu | 90 | `InvalidAmount` |
| Vstup parsera (znaky) | 128 | `InvalidAmount` |
| Počet častí split() | 1..10 000 | `InvalidAllocation` |
| Škály (MinorUnits, ofScaled, toScaled) | 0..36 | `InvalidAmount` |
| Exponent vlastnej meny | 0..18 | `InvalidCurrency` |
| Členy pomeru po skrátení (číslice) | 80 | `InvalidRatio` |
| Uložené číslice (schema.precision) | 38 | `InvalidMoneyValue` |

## Databázové stĺpce

$table->money() vytvorí znamienkový stĺpec sumy decimal(P, 0) (P = money.schema.precision, predvolene 38) a stĺpec meny. Decimal dáva natívne číselné ORDER BY, rozsahové filtre aj presné SUM — bigint by vrátil strop int64 a varchar radí „9“ za „10“.

| Databáza | Stĺpec | PDO vráti | Mimo rozsahu |
| --- | --- | --- | --- |
| PostgreSQL | `numeric(38,0)` | reťazec „1050“ | chyba numeric\_value\_out\_of\_range |
| MySQL / MariaDB | `decimal(38,0)` | reťazec „1050“ | Chyba rozsahu v strict móde (non-strict MySQL nie je podporované) |
| SQLite | `numeric` | int 1050 | Potichu by sa zmenilo na REAL — cast preto odmietne sumy nad int64 |

SQL Server podporovaný nie je: nepokrýva ho žiadny beh CI a rozsiahla aktualizácia kurzov (feedy ECB recent a history) viaže pri jednom upserte viac parametrov, než dovoľuje jeho limit 2 100 parametrov.

Škála je vždy 0 — exponent je v registri mien, takže jeden stĺpec udrží riadky v JPY (0), EUR (2) aj ETH (18). Pre stĺpce veľkosti int64 znížte money.schema.precision na 19; Currency::maxMajorAmount() vráti najväčšiu uložiteľnú sumu:

```php
Currency::of('EUR')->maxMajorAmount(19);   // "99999999999999999.99"
```

## 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)
