Autor Zpráva
IdemeNaHavaj
Profil
Ahoj,
Mám 2 stĺpce v db:
aktivne body | neaktivne body
         0             1.36
a mám formulár čo mi ich updatuje, no ale to je jedno problém je ten
že cez formulár odošlem číslo napríklad 1.36 a sql urobí toto
update tabulka set aktivne = aktivne+$cislo, neaktivne = neaktivne-$cislo
aktine sa updatne DOBRE, pretože 0 sa premení na 1.36 ale neaktivne sa mi premenia na 0.0000000143051 prečo??
skúšal som aj number_format() a nezaberá
maks
Profil
IdemeNaHavaj:
prečo?
preto.

Hledej, na diskusi se o práci s malými čísly již zabývalo. Nejsi první s tímto problémem.
Trejpa
Profil
IdemeNaHavaj:
Časté potíže, zajímavosti a poučné debaty » Výsledkem výpočtu 1 - 0.9 není přesně 0.1
IdemeNaHavaj
Profil
Trejpa:
Ano to som už videl ale to sa týka javascriptu a ja mám číslo v PHP premennej
maks
Profil
IdemeNaHavaj:
ať se jedná o PHP nebo JS, číslo je ukládáno do počítače. A ten je stejný pro vykonávání JS i PHP.
peta
Profil
Pro php mozna jeste odkaz na knihovny pro presne pocitani.
http://www.php.net/manual/en/refs.math.php
IdemeNaHavaj
Profil
No zistil som že to číslo je v premennej PHP ešte dobré 1.36, až v SQL sa asi pokazí
Alphard
Profil
peta [#6]:
To je zbytečné, stačí správně zaokrouhlit.

IdemeNaHavaj [#1]:
number_format() jste asi zkoušel špatně. Když budete výsledek vypisovat s přesnosti do 7 desetinných míst, musí vrátit 0. Pokud chcete „jen nulu“ bez dalších nul na desetinných místech, inspirujte se tady stackoverflow.com/questions/5149129/how-to-strip-trailing-zeros-in-php (další krok po number_format()).

IdemeNaHavaj [#7]:
To číslo se nepokazí tak doslova, je to prostě nevyhnutelná vlastnosti reprezentace desetinných čísel ve výpočetních technice. Hlavně to tady nepitvejte a najděte si o tom nějaký článek, jestli vás to zajímá :-) řešilo se to milionkrát.
IdemeNaHavaj
Profil
Vyrišil som to tak že som zmenil ten stĺpec z float na decimal 10,2
petr 6
Profil
IdemeNaHavaj:
Čeho chcete dosáhnout? Šlo by číslo převést a ukládat jako integer?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0