Decimal brojčani tip podataka

C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Avatar
drone
Moderator
Postovi: 3293
Pridružen/a: 01 pro 2010, 23:50
OS: Arch/KDE, Debian/Armbian
Lokacija: Nova Gradiška

Decimal brojčani tip podataka

Post Postao/la drone »

Gledam koje tipove podataka ruby podržava što se brojeva tiče i vidim da nema decimal (dekadski) tip. To mi inače ovih dana jako fali u C++ i Qt jer je to tip za točno računanje i prikaz novčanih vrijednosti.
Zadnja izmjena: drone, dana/u 15 srp 2011, 12:07, ukupno mijenjano 2 puta.
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: [Ruby] Learn To Program

Post Postao/la shrike »

Ovo nema smisla. Kako može NE podržavati dekadske brojeve?! To znači da ne možeš zbrojti, recimo, 2.5 +1?
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
drone
Moderator
Postovi: 3293
Pridružen/a: 01 pro 2010, 23:50
OS: Arch/KDE, Debian/Armbian
Lokacija: Nova Gradiška

Re: [Ruby] Learn To Program

Post Postao/la drone »

shrike je napisao/la:Ovo nema smisla. Kako može NE podržavati dekadske brojeve?! To znači da ne možeš zbrojti, recimo, 2.5 +1?
Zato što komp radi u binarnom sustavu, a taj ne može sve dekadske brojeve točno prikazati, događaju se greške u decimalama. Zapravo to je decimal na engleskom, znači na hrvatskom dekadski (ponekad i mene to zbuni skroz), valjda nisam fulao.
Kod love, sve mora štimati. Znači, fixed point, not floating. Decimal data type, not double or float.
Zadnja izmjena: drone, dana/u 13 srp 2011, 22:06, ukupno mijenjano 1 put.
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Avatar
tartaglia
Postovi: 400
Pridružen/a: 13 sij 2009, 12:57
Spol: M
OS: openSuse 11.3
Lokacija: Zagreb

Re: [Ruby] Learn To Program

Post Postao/la tartaglia »

To je valjda decimal u smislu 128 bitnog realnog broja. Precizniji je od doubla (nekih 28 decimala u odnosu na 16), ali ima manji raspon (oko 10^-28 - 10^28 naprema oko 10^-300 - 10^300).

Mada ne vidim gdje je to korisno.
Avoid the Gates of Hell. Use Linux!
Avatar
drone
Moderator
Postovi: 3293
Pridružen/a: 01 pro 2010, 23:50
OS: Arch/KDE, Debian/Armbian
Lokacija: Nova Gradiška

Re: [Ruby] Learn To Program

Post Postao/la drone »

tartaglia je napisao/la:To je valjda decimal u smislu 128 bitnog realnog broja. Precizniji je od doubla (nekih 28 decimala u odnosu na 16), ali ima manji raspon (oko 10^-28 - 10^28 naprema oko 10^-300 - 10^300).

Mada ne vidim gdje je to korisno.
Kao što rekoh, u financijama gdje ne smiješ imati grešaka u decimalama i gdje je potrebno točno zaokruživanje. Znači, potreban je tip podatka koji radi s dekadskim brojevnim sustavom, a ne s binarnim. Nisam ni ja ovo znao dok nisam počeo raditi nešto za knjigovođu.

http://www.qtcentre.org/threads/7709-Ba ... 27b0268a0d
http://stackoverflow.com/questions/2547 ... pe-in-qt-c
http://stackoverflow.com/questions/1490 ... alues-in-c
itd. itd.
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Avatar
tartaglia
Postovi: 400
Pridružen/a: 13 sij 2009, 12:57
Spol: M
OS: openSuse 11.3
Lokacija: Zagreb

Re: [Ruby] Learn To Program

Post Postao/la tartaglia »

Kuzim, ali kolko moze fulat, recimo 0.1 mu je otprilike 0.099999999.
Ili mu je bitno da lijepo zaokruzi?
Avoid the Gates of Hell. Use Linux!
Avatar
drone
Moderator
Postovi: 3293
Pridružen/a: 01 pro 2010, 23:50
OS: Arch/KDE, Debian/Armbian
Lokacija: Nova Gradiška

Re: [Ruby] Learn To Program

Post Postao/la drone »

tartaglia je napisao/la:Kuzim, ali kolko moze fulat, recimo 0.1 mu je otprilike 0.099999999.
Ili mu je bitno da lijepo zaokruzi?
Ma to se akumulira, pa uskoro imaš zlo. Recimo početnu cijenu množiš s maržom, pa na to pdv... pa ti ispadne drugi rezultat kad na računu zbrojiš krajnje maloprodajne cijene redak po redak (kad je više artikala) nego kad recimo zbrojiš sve nabavne cijene, pa taj zbroj pomnožiš s maržom i pdv-om. A moralo bi biti jednako. Na kraju dođe inspekcija i zbog nekoliko lipa... sbatine
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Avatar
tartaglia
Postovi: 400
Pridružen/a: 13 sij 2009, 12:57
Spol: M
OS: openSuse 11.3
Lokacija: Zagreb

Re: [Ruby] Learn To Program

Post Postao/la tartaglia »

Ali mislim da ni decimal nije 'pravi' dekadski nego samo precizniji binarni (128 bita), tak da se i njemu moze nakupit greska. Ali jasno, da nije potrebno ne bi postojalo.
Avoid the Gates of Hell. Use Linux!
Avatar
drone
Moderator
Postovi: 3293
Pridružen/a: 01 pro 2010, 23:50
OS: Arch/KDE, Debian/Armbian
Lokacija: Nova Gradiška

Re: [Ruby] Learn To Program

Post Postao/la drone »

tartaglia je napisao/la:Ali mislim da ni decimal nije 'pravi' dekadski nego samo precizniji binarni (128 bita), tak da se i njemu moze nakupit greska. Ali jasno, da nije potrebno ne bi postojalo.
Blago onom kome se s tim počnu greške nakupljat :)
Ma postoji dosta libsa za te stvari, cijela znanost i ne odnosi se ovo samo na financije.

Jest offtopic, ali mjesec dana sam se s tim zezao i tražio koji library za C++ bi mi bio najbolji i izabrao sam MAPM. To je C lib, ali ima dobar wrapper za C++. Za ruby mislim nema, ali čini mi se da ima nekih drugih.
http://www.tc.umn.edu/~ringx004/mapm-main.html
http://www.tc.umn.edu/~ringx004/article-main.html

Eto, ako slučajno nekom zatreba...
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Avatar
jjj
Postovi: 1451
Pridružen/a: 04 lip 2009, 00:46
OS: Nepu Yvahk
Lokacija: Classyfied

Re: [Ruby] Learn To Program

Post Postao/la jjj »

Ovo je dobro objašnjenje razlike između binarnog i decimalnog floating pointa (decimalni == dekadski), odnosno zašto je dobra ideja koristiti potonji za određene vrste kalkulacija.

Anyway, ako ne postoji takav library za Ruby, onda još uvijek možeš riješiti problem koristeći integere.
Odgovori