php round probléma
Sziasztok!
Van egy ilyen kódom:Aminek ez lesz a végeredménye:Tud valaki segíteni, hogy ezt hogy lehetne elkerülni?
Üdv Karesz
■ Van egy ilyen kódom:
<?php
echo '1200000 ->'.round(1200000, 2);
?>
1200000 ->1.2E+6
Üdv Karesz
php manual
kommentek között nem találtál megoldást?
kommentek
Azért kérdeztem meg itt fórumon,mert gondoltam van valami szebb módja is mint megírni újra amit elvileg már tartalmaz a php.
rosszul működik a round
a printf vagy sprintf függvény nem segít neked? mindekttő ugyanazt csinálja, csak az egyik kiírja a másik meg visszaadja a formázott szöveget.
Segítség
Az sprintfről egyébként tényleg nem sokan tudják, hogy a %f tud ilyet, a %e meg scientific formázást. Mostmár tudjátok ;)
olvasd a manual kommentjeit
echo round(1200000); // 1.2E+6
echo round(1300000); // 1300000
echo round(1400000); // 1.4E+6
nem a tudományos jelöléssel (ez talán egy populárisabb elnevezés) van a baj, hanem azzal, hogy a php nem következetes.
a manuálban meg szépen le van írva sprintf címszó alatt az összes típus módosító (vagy mi). a %f és %e is.
én azért személy szerint köszönöm az okítást. :P
round?
Mivel a számítógép nem tízes számrendszerben „gondolkodik”, a lebegőpontos számoknál sem.
Az meg nem a round gondja, hogy az egész számból hogyan csinál a php sztringet.
Jól beszélsz
Tartom a véleményem, hogy a PHP round függvénye kiválóan és hibátlanul müködik.
Ui.: Nem akartam ám erőszakoskodni a stílusommal, ezért bocsánat.
azert valami van...
Tud valaki jobbat?
Nekem most csak C és PHP áll rendelkezésemre, ha senki nem jelentkezik, akkor később majd kipróbálom magam. Bár meglepne ha lenne olyan pályázó, aki másként viselkedne.
Kettő
nálam 2.14
nálad pedig 2.13.
szerk: php5.2.3, te milyen verzión próbálod?
Milyen platform?
debian linux
Nálam is változó
nalam 5.2.3
Biztos az aramingadozas a hibas :)
off
10db...1000ft
20db...1800ft
50db...4000ft
gyors, PONTOS, megbízható!
:D
ha mar off
ezt a round fuggvenyt hasznaljak a kozertben is, hiszen arban 10 x 1 kifli != 10 kifli :)
érdekesség: banker's rounding
http://bugs.php.net/bug.php?id=24142#c64238 (wikipedia leírás)
a manual egy kommentjéből viszont úgy tűnik, hogy nincs már ilyenfajta kerekítés a php-ban. a kommentben lévő linket követve találtam egy cikket a kerekítés fajtáiról (vizualizálva is), ami eléggé meglepett, mert nem tudtam, hogy ennyiféleképpen lehet kerekíteni. a közgázosok gondolom itt előnyben lehetnek.
elképzelhető, hogy round függvényen belül valamilyen kacifántos kerekítés van? pl ez megmagyarázná, hogy miért más a két eredmény. :)
echo, print
printf
locale-specifikusan kezeli.)nem értem
és nem értem az "egész szám" és "sztring" szavakat sem. az idézetben valószínűleg nem a sztring jelölés miatt van idézőjel.
Nézz utána
Ha meg ismered, akkor pedig egyáltalán nem értem hogy miért írtad le azt amit írtál...vagy hogy mit akartál kommunikálni.
lehet hogy régen volt
viszont látom te hozzáértő vagy, ezt meg tudod nekem - laikusnak - magyarázni?
A C round
Mivel feltételezem a C beépített round-ját használja, ezért libc implementációtól kezdve a hardverig sokminden lehet az oka.
binaris problema?
jo ha ismert a gond azok elott akik a fuggveny hasznalni akarjak, es feltetelezem, hogy a szamos beiras (es felteszem ugyanannyi bugreport) hatasara a feljesztok nagy gondodssaggal at fogjak az egeszet turni
Ez már szakállas
A lényeg hogy nem most merült fel ez az ügy, hanem soksok évvel ezelőtt. Azóta újra és újra megjelenik.
(az ügy ugye a tárolás végességéből és a float ábrázolás mikéntjéből ered)
Lebegőpontos, nem pontos