float tizedeselválasztó
Üdv!
A következő jelenségbe futottam bele:
egy ideje a gépemen (és egyes szervereken) a float értékek tizedesvesszővel elválasztva jelennek meg a tizedespont helyett.Ez önmagában nem lenne gond, de mikor mondjuk egy számot floattá alakítva rakok adatbázislekérésbe (tudom, nem szabadna) akkor a mysql a vessző miatt csak a tizedesjel előtti részt kapja el. Az igaz, hogy a magyar helyesírási szabályzat szerint a vessző a helyes, csak erről a mysql nem tud.
Ez valami beállítás miatt van, feature, bug?
(A phpm Version 5.3.5-1ubuntu7.7 )
■ A következő jelenségbe futottam bele:
egy ideje a gépemen (és egyes szervereken) a float értékek tizedesvesszővel elválasztva jelennek meg a tizedespont helyett.
echo 1.3456 // 1,3456
Ez valami beállítás miatt van, feature, bug?
(A phpm Version 5.3.5-1ubuntu7.7 )
php dokumentáció
számot floattá alakítva Ezt
Ezt részleteznéd? Mit jelent azt, hogy számot float-tá alakítva? A PHP a számokat belül a megfelelő adatformátumban tárolja, azaz a lebegőpontosokat float-ként, az egészeket int-ként stb.
Én ilyennel még sosem találkoztam, úgyhogy mindenképpen valami beállításbeli probléma lehet vagy valami bug a rendszeredben.
Először is érdemes megnézni, milyen locale-t használ a PHP (
setlocale(LC_NUMERIC, 0)
), és ezt lenne érdemes módosítani egy olyanra, amiben nincsenek tizedesvesszők, hanem tizedespontok (példáulsetlocale(LC_NUMERIC, 'C')
).locale
%F - the argument is treated as a float, and presented as a floating-point number (non-locale aware). Available since PHP 4.3.10 and PHP 5.0.3.
a setlocale(LC_NUMERIC, 0) szerint a locale 'hu_HU.UTF8', a localeconv szerint meg a decimal_point ',', szóval valóban itt a „hiba”.
Az érdekes az az egészben, hogy 2 hónappal ezelőtt még egészen biztosan tizedesponttal kaptam a floatokat (amelyik query nálam jó volt, a tesztszerveren nem ment), a PHP már akkor is 5.3 volt és azóta nem állítottam localet. De az is lehet, hogy valamit nagyon félrenéztem.
Köszönet a segítségért!