Bc: int|float|string als Input akzeptieren #1

Open
opened 2026-07-30 09:34:07 +02:00 by claudeCode · 0 comments
Member

Beschreibung

Alle Methoden in Bc akzeptieren aktuell nur string als Eingabetyp. Um die Nutzbarkeit zu verbessern, sollen die Parameter-Typen auf int|float|string erweitert werden. Der Wert wird intern automatisch via (string) nach string gecastet, bevor er an bcmath übergeben wird.

Motivation

Nutzer müssen aktuell explizit casten:

Bc::add((string) $a, (string) $b);

Nach der Änderung direkt:

Bc::add(1, 2.5);
Bc::add(1, '2.5');

Akzeptanzkriterien

  • Alle Methoden mit String-Parametern akzeptieren int|float|string
  • int und float werden intern zu string gecastet
  • Rückgabewert bleibt string (Präzision bleibt erhalten)
  • PHPDoc-Annotationen (@param) werden aktualisiert
  • Bestehende Tests laufen weiterhin durch
  • Neue Tests für int- und float-Inputs ergänzt
  • phpstan (Level 9) ohne Fehler
  • php-cs-fixer ohne Beanstandungen

Betroffene Methoden

add, sub, mul, div, scale, abs, max, min, compare, isZero, gt, lt, gte, lte, eq, isPositive, isNegative, negate, percent

Array-Methoden (sum, product, subAll, divAll) ebenfalls: Array-Elemente auf int|float|string erweitern.

Hinweise

  • Rückgabewert bleibt bewusst string, da float Präzision verliert — das widerspricht dem Zweck von Bc.
  • Dieses Ticket ist Voraussetzung für #2 (Konverter-Methoden toInt()/toFloat()).
## Beschreibung Alle Methoden in `Bc` akzeptieren aktuell nur `string` als Eingabetyp. Um die Nutzbarkeit zu verbessern, sollen die Parameter-Typen auf `int|float|string` erweitert werden. Der Wert wird intern automatisch via `(string)` nach `string` gecastet, bevor er an bcmath übergeben wird. ## Motivation Nutzer müssen aktuell explizit casten: ```php Bc::add((string) $a, (string) $b); ``` Nach der Änderung direkt: ```php Bc::add(1, 2.5); Bc::add(1, '2.5'); ``` ## Akzeptanzkriterien - [ ] Alle Methoden mit String-Parametern akzeptieren `int|float|string` - [ ] `int` und `float` werden intern zu `string` gecastet - [ ] Rückgabewert bleibt `string` (Präzision bleibt erhalten) - [ ] PHPDoc-Annotationen (`@param`) werden aktualisiert - [ ] Bestehende Tests laufen weiterhin durch - [ ] Neue Tests für `int`- und `float`-Inputs ergänzt - [ ] `phpstan` (Level 9) ohne Fehler - [ ] `php-cs-fixer` ohne Beanstandungen ## Betroffene Methoden `add`, `sub`, `mul`, `div`, `scale`, `abs`, `max`, `min`, `compare`, `isZero`, `gt`, `lt`, `gte`, `lte`, `eq`, `isPositive`, `isNegative`, `negate`, `percent` Array-Methoden (`sum`, `product`, `subAll`, `divAll`) ebenfalls: Array-Elemente auf `int|float|string` erweitern. ## Hinweise - Rückgabewert bleibt bewusst `string`, da `float` Präzision verliert — das widerspricht dem Zweck von `Bc`. - Dieses Ticket ist Voraussetzung für #2 (Konverter-Methoden `toInt()`/`toFloat()`).
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tez/tez-utils-num#1