Работата с парите, няма как да се проумее ако човек не знае как борави компютъра с цифрите(нарочно споменавам цифри, а не числа). Всичко започва с това как компютъра съхранява и разчита дадена цифра.
Еч беше дал линк към едни лекции за програмиране от университета Станфорд - на втората или третата лекция, лектора съвсем целенасочено набляга на това как компютъра борави с цифрите( а не с парите! ).
Както знаете процесорите ползват двоично представяне на информацията - под информацията в случая имаме предвид
цифрите. Само те ни интересуват защото чрез тях правим операциите с парите.
Сега, много е важно да не смесвате и да не припознавате парите с цифрите! В програмирането забравяте за това нещо. Просто си знайте че парите са едно лице(личност) представяна от друго лице(личност) - в случая от цифри. Така че по пътя на логиката няма как две лица(личности) да са едно и също нещо
Защо ви го казвам това. Ами защото когато работим с пари, ние не ползваме съвсем същите правила за броене/делене/умножение/събиране/изваждане като с цифрите. И за да не се омотаете, веднага давам пример( Подобен на този споделен от Стилгар).
Примерно имаме двете цифри 1 и 3. Когато искаме да разделим цифрата 1 на цифрата 3 или да съберем цифрата 1 с цифрата 3, това е напълно нормално нали така? А примерно когато имаме 1лв и 3лв и ако ви кажа да се опитате да разделите 1лв на 3лв, какво ще кажете, а?
А ако ви накарам да съберете 1лв. с 3лв., тогава става нали?
И какво се получава - парите са представени от цифри, но самите пари нямат същите свойства като цифрите.
Ето тука идва големия проблем. Когато се опитваме да представяме една единица(лице/личност) със свойствата на друга единица(лице/личност).
Затова не можем директно да работим с парите в компютрите. Защото компютрите не виждат пари, ами цифри(макар и представени двоично)
И много хора бъркат двете неща и от там попадат в задънена улица.
А относно начина за представяне на парите с цифри - ами сложно е
но не е невъзможно.
За да постигнеш целта си, първо трябва да си направиш списък на всички възможни
операции/свойства на парите.
След това има едно много просто правило - парите винаги имат една най-малка единица.
Остава да имплементираш всички тези операции/свойства на парите като код и този код да работи с най-малката единица. Ако схващаш логиката ще се запиташ - ама защо трябва да работя точно с най-малката единица (на прост език казано - защо трябва да обръщам всичко в стотинки!).
Отговора ще бъде много дълъг и затова ще кажа само едно - логиката е същата като при компютрите(процесорите). Задайте си въпроса, защо и при тях ползват възможно най-простата бройна система(двоичната), м?
Така че, дръж нещата прости. Наистина се налага да направиш собствен абстрактен слой(имплементиране на горните правила за парите и техните свойства) чрез който да стане връзката с цифрите. Естествено че ще станат много големи сметки, и данните ще костват по-голям overhead/обем от място, но това е положението.
Парите винаги са били сложно нещо и ще си останат сложно нещо, защото човек има "различно" разбиране/отношение към тях.
PS: Ето го линка за лекциите от Станфорд:
http://academicearth.org/courses/programming-paradigmsМного е препоръчително да ги видите, или поне да проумеете как работи компютъра с цифрите, ако искате да няма проблеми със сметките с пари при компютрите