Hirdetés

Keresés

Új hozzászólás Aktív témák

  • urandom0

    senior tag

    válasz Drótszamár #21785 üzenetére

    Szerintem ezt nem fogod tudni egyetlen beállítással megoldani.
    Tippre azt mondanám, hogy azért van most így, mert 8.0 óta az lebegő pontos számok kiíratása nem "locale aware".
    Ez a kód:

    setlocale(LC_NUMERIC, "en_US");
    $i = 1.01;
    echo $i;
    echo PHP_EOL;
    setlocale(LC_NUMERIC, "de_DE");
    $j = 1.01;
    echo $j;
    PHP 8 előtt ezt írta ki:
    1.01
    1,01

    PHP 8 óta ezt:
    1.01
    1.01

    Bár a nullára végződő számoknál szerintem régen is levágta a nullákat, legalább is én nem tudtam az általad mutatott eredményt produkálni régi compilerrel sem. Elképzelhető, hogy a kódodban valahol korábban van valami trimmelés, ami úgy lett megírva, hogy a ponttól jobbra végződő nullákat levágja? És mivel régen locale aware volt az floating -> string átalakítás, ezért ott vessző volt, míg újabban pont, és ezért vágja le...? Nem tudom, csak tippelek.

    Szóval azon kívül, hogy átírod a kódot, szerintem mást nem tudsz tenni. Van erre többféle megoldás is, number_format, sprintf, NumberFormatter, paddolás...

Új hozzászólás Aktív témák