Autor Zpráva
Monkeys
Profil *
Zdravim,

mam zoznam atributov cisla s desatinnou ciarkou, chcem to ulozit ako decimal, ale ako si tak pozeram ten zoznam sem tam sa ukaze aj cislo so zlomkom napriklad 7 1/4
neviem ako to ulozit pod aky format.
napada ma ukladat tie cisla ako varchar no neviem ci je to dobre riesenie ?

vdaka
Monkeys
Monkeys
Profil *
Tak zlomky sa daju ulozit ako decimal takto => 7 1/14 => 7,25
Dalsi problem je ako cez PHP zistit a konvertovat ten zlomok :)
Keeehi
Profil
Monkeys:
napada ma ukladat tie cisla ako varchar no neviem ci je to dobre riesenie?
Záleží, k čemu to má sloužit. Pokud to má být číslo a bude se s tím počítat, pak by to asi mělo být uložené jako číslo a bylo by dobré to sjednotit. Pokud je to spíš jen informace, popis něčeho, může to zůstat jako text a může to být vhodnější. Například průměry vodovodních trubek se udávají ve zlomcích. Když přijdeš za instalatérem a budeš chtít "tříčtvrtku", bude vědět o co jde ale když po něm budeš chtít trubku 0,75 tak na tebe bude zřejmě jen hloupě koukat. Tím chci jen říct, ze jsou oblasti, kde nějaká normalizace by nemusela být vhodná.

Dalsi problem je ako cez PHP zistit a konvertovat ten zlomok :)
Tak nejdříve je potřeba zjistit, jaké všechny formáty se ti tam mohou vyskytnout. A podle toho si napsat třeba regulární výrazy, které je zvládnou detekovat. Tím se dá program rozčlenit a pak už jen napíšeš kód, který bude převádět konkrétní formát.
petr
Profil *
Monkeys:
Kde se ten seznam vlastně vzal? Proč jsou v něm čísla dvojího zápisu?
Potřebuješ i zlomky, při nichž vznikne v desetinném zápisu perioda? Když se třeba do databáze uloží zlomek 1/29 jako decimal, těžko se s čísla* 0.0344827586206896551724137931 vydoluje zpátky zlomek 1/29 (což vadit může a nemusí), zaprvé má decimal vždy omezenou přesnost (takže se nemusí ani uložit celá perioda – bude oříznuta), navíc není zachována informace o periodě „odsaď podsaď“ – zkrátka pro ukládaní zlomků se decimal nehodí.
Pokud ano, ukládej si buď zvlášť
1. celočíselnou část, čitatel a jmenovatel (zlomku), nebo
2. celočíselnou část, desetinnou část před periodou a samotnou periodu.

Př.: (7/12) = 0.58‾3 = 0.583333333333333…
Podle 1.: celočíselná část 0, čitatel 7, jmenovatel 12
Podle 2.: celoč. část 0, desetinná před periodou 58 a perioda 3

Formát 1. jde samozřejmě převést na formát 2. a naopak.

* 1/29 = 0.‾0344827586206896551724137931 (perioda začíná ‾)
Keeehi
Profil
petr:
1b) celočíselná část jde převést do čitatele
Monkeys
Profil *
petr:
Kde se ten seznam vlastně vzal? Proč jsou v něm čísla dvojího zápisu?

Je to zoznam kalibrov pre sportovu strelbu.
Ale ako pisal uz vyzsie Keeehi neni to cislo s ktorym by sa pocitalo, ma iba cisto informacny charakter, takze to ulozim ako varchar alebo ako text to este premyslim.

M.
petr
Profil *
Škoda, název tématu vypadal slibně, teď se to bude ukládat jako nudný text :D

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: