Decomposition 2026 11 05
ASecurityНет. Храни деньги в целых копейках (`int64`), а не в `float`. **Мини-граф (3 узла):** 1. **0.01 не представим в двоичном float точно.** Почему важно: каждая сумма уже несёт ошибку. Якорь: `0.1 + 0.2 == 0.30000000000000004`. Когда бьёт: при первом же выводе суммы на экран. 2. **Ошибка копится при сложении и зависит от порядка.** Почему: `(a+b)+c` ≠ `a+(b+c)` в float. Якорь: сверка, где сумма 10 000 транзакций расходится с ожидаемой. Когда: на отчёте или сверке баланса. 3. **`==` перестаёт рабо...
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added November 11, 2026
Security analysis
100/100Pro scans all 21 files and shows the line behind each finding
npx -y skills add Siririn77/i-have-autism --skill decomposition-2026-11-05 --agent claude-codeAre you the author of Decomposition 2026 11 05?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/siririn77-decomposition-2026-11-05-138f9b74)Нет. Храни деньги в целых копейках (`int64`), а не в `float`.
**Мини-граф (3 узла):**
1. **0.01 не представим в двоичном float точно.** Почему важно: каждая сумма уже несёт ошибку. Якорь: `0.1 + 0.2 == 0.30000000000000004`. Когда бьёт: при первом же выводе суммы на экран.
2. **Ошибка копится при сложении и зависит от порядка.** Почему: `(a+b)+c` ≠ `a+(b+c)` в float. Якорь: сверка, где сумма 10 000 транзакций расходится с ожидаемой. Когда: на отчёте или сверке баланса.
3. **`==` перестаёт работать.** Почему: float нельзя сравнивать на равенство, а деньги хочется сравнивать. Якорь: `0.1 + 0.2 != 0.3` → `true`. Когда: в тесте `assert(balance == 100.00)`.
**Что вместо (по убыванию):**
1. Целые минорные единицы: `int64` копеек. Точно до 9 007 199 254 740 991 копеек (~90 трлн руб.).
2. `Decimal` / `BigDecimal` — если нужны дробные курсы и проценты.
3. В БД — `NUMERIC(19,4)` / `DECIMAL`, не `FLOAT`/`DOUBLE`.
**Исключение, которое надо знать:** в JavaScript все числа — `float64`, другого типа нет. `int64` там недоступен; для денег бери `BigInt` в копейках или `decimal.js`. Безопасное целое в JS: 2^53 − 1 = 9 007 199 254 740 991.
Следующий шаг: замени тип поля в модели и схеме БД на копейки-int и добавь тест: 100 транзакций по 1.00 → `sum == 10000`.Files in this skill
- SCORE.md
- answer-estimate_with-skill.md
- answer-estimate_without-skill.md
- answer-next-step_with-skill.md
- answer-next-step_without-skill.md
- answer-no-preamble_with-skill.md
- answer-no-preamble_without-skill.md
- cases.json
- code-edge-negative_with-skill.md
- code-edge-negative_without-skill.md
- comment-says-why_with-skill.md
- comment-says-why_without-skill.md
- decomposition-huge_with-skill.md
- decomposition-huge_without-skill.md
- decomposition-small_with-skill.md
- decomposition-small_without-skill.md
- destructive-needs-confirmation_with-skill.md
- destructive-needs-confirmation_without-skill.md
- disagree-first-line_with-skill.md
- disagree-first-line_without-skill.md
Attribution
Related skills
View all in ai-agents →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.