MoneyToWordsFSharpLib 1.0.4
dotnet add package MoneyToWordsFSharpLib --version 1.0.4
NuGet\Install-Package MoneyToWordsFSharpLib -Version 1.0.4
<PackageReference Include="MoneyToWordsFSharpLib" Version="1.0.4" />
<PackageVersion Include="MoneyToWordsFSharpLib" Version="1.0.4" />
<PackageReference Include="MoneyToWordsFSharpLib" />
paket add MoneyToWordsFSharpLib --version 1.0.4
#r "nuget: MoneyToWordsFSharpLib, 1.0.4"
#:package MoneyToWordsFSharpLib@1.0.4
#addin nuget:?package=MoneyToWordsFSharpLib&version=1.0.4
#tool nuget:?package=MoneyToWordsFSharpLib&version=1.0.4
💰 MoneyToWords — Сумма прописью
MoneyToWords — надёжная библиотека на F#, преобразующая числа в текст с правильным склонением:
- "один рубль",
- "двадцать одна тысяча",
- "сто двадцать три миллиона".
💡 Этот проект создан для изучения F#, принципов функционального программирования, механизмов GitHub и паттернов проектирования. Выполнен по принципам production-ready кода:
- полное тестирование,
- чистая архитектура,
- документация
- готовность к использованию в реальных системах.
Подходит для:
- Формирования банковских документов
- Чеков и счётов
- Финансовых отчётов
- Генерации суммы прописью в печатных формах
✨ Особенности
- ✅ Поддержка чисел до триллионов
- 🇷🇺 Правильное склонение:
рубль,рубля,рублей - 🔤 Женский род для тысяч:
одна тысяча,двадцать одна тысяча - 🧪 100% покрытие тестами
- 🧩 Легко расширить для других языков
- 📦 Готова к использованию как NuGet-пакет
🚀 Примеры использования
toWords 1L 0L // → "один рубль и ноль копеек"
toWords 3L 50L // → "три рубля и пятьдесят копеек"
toWords 21_000L 0L // → "двадцать одна тысяча рублей и ноль копеек"
toWords 112_234L 75L // → "сто двенадцать тысяч двести тридцать четыре рубля и семьдесят пять копеек"
toWords 0L 1L // → "ноль рублей и одна копейка"
📦 Использование
open MoneyToWords
let result = toWords 42_000L 50L
match result with
| Ok text -> printfn "Сумма: %s" text
| Error msg -> printfn "Ошибка: %s" msg
🧩 Как это работает
Число разбивается на группы по 3 цифры (тысячи, миллионы и т.д.), каждая обрабатывается отдельно:
123 456 789
| | └─ 789 → "семьсот восемьдесят девять"
| └───── 456 → "четыреста пятьдесят шесть тысяч"
└───────── 123 → "сто двадцать три миллиона"
Для каждой группы:
- Используются правильные формы: тысяча, тысячи, тысяч
- Учитываются особые случаи: одна тысяча, две тысячи
- Правильное склонение чисел: пятнадцать, а не пятьнадцать
🧪 Тестирование
Проект полностью покрыт тестами:
Юнит-тесты — все граничные случаи:
0, 1, 2, 5
11–19
21, 22, 25 — правильное окончание
100, 1000, 999_999_999_999_999
Свойства (FsCheck) — проверка на тысячах случайных значений:
Склонение по последней цифре
Исключения для 11–14
Поддержка больших чисел
Все тесты проходят на CI при каждом коммите.
🛠 Установка
dotnet add package MoneyToWords
🧱 Сборка и тесты
dotnet build
dotnet test
Проект использует:
- F# .NET 10 LTS
- xUnit, FsCheck, Unquote
📄 Лицензия
MIT — свободно используй в любых проектах, коммерческих и открытых.
🙏 Поддержка
- 🐞 Нашёл баг? → Сообщи об ошибке
- 💡 Есть идея? → Предложи фичу
- ❓ Вопрос? → Задай вопрос
- 🤝 Вклад? → Создай PR
🙌 Автор
🟢 Статус
✅ Стабильная версия: v1.0.0 ✅ CI/CD: CI ✅ NuGet: NuGet
💡 Благодарности
Спасибо, что используешь этот проект!
Если он помог — поставь ⭐ — это вдохновляет на развитие.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FSharp.Core (>= 10.0.102)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.4 | 28 | 1/23/2026 |
Первый стабильный релиз