ബ്ലോഗ്
Boring Expenses പണം എങ്ങനെ സൂക്ഷിക്കുന്നു (അത് എന്തുകൊണ്ട് പൂർണ്ണസംഖ്യ)
ഒരു പൈസ നഷ്ടപ്പെടുത്താനുള്ള ക്ലാസിക് വഴി ഇതാ. ഏതാണ്ട് ഏത് പ്രോഗ്രാമിംഗ് ഭാഷയോടും 0.1 + 0.2 എത്രയെന്ന് ചോദിക്കൂ, അത് 0.30000000000000004 എന്ന് പറയും. ഇത് ഭാഷയുടെ ബഗ്ഗല്ല — ബൈനറി ഫ്ലോട്ടിംഗ്-പോയിന്റ് സംഖ്യകൾ ഇങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത്. മിക്ക ദശാംശ ഭിന്നസംഖ്യകളും അവയ്ക്ക് കൃത്യമായി പ്രതിനിധീകരിക്കാനാവില്ല, അതിനാൽ ചെറിയ പിശകുകൾ കടന്നുകൂടുന്നു. ഭൗതികശാസ്ത്രത്തിന് കുഴപ്പമില്ല; പണത്തിന് പറ്റില്ല.
ഫിനാൻസ് ആപ്പിന് “ഏതാണ്ട് ശരി” തെറ്റായ ഉത്തരമാണ്. അതുകൊണ്ട് Boring Expenses ഒരു തുകയും ദശാംശമായി സൂക്ഷിക്കുന്നേയില്ല.
ഏറ്റവും ചെറിയ യൂണിറ്റ് പൂർണ്ണസംഖ്യയായി സൂക്ഷിക്കുക
പണ സോഫ്റ്റ്വെയർ എക്കാലവും ഉപയോഗിക്കുന്ന തന്ത്രം, ഏറ്റവും ചെറിയ യൂണിറ്റിൽ പ്രവർത്തിച്ച് അത് പൂർണ്ണസംഖ്യയായി നിലനിർത്തുക എന്നതാണ്. $4.20 എന്നതിന് പകരം 420 — സെന്റുകളുടെ എണ്ണം — സൂക്ഷിക്കുന്നു. പൂർണ്ണസംഖ്യകൾ കൃത്യമാണ്. ദിവസം മുഴുവൻ കൂട്ടുകയും കുറയ്ക്കുകയും ആകെ കാണുകയും ചെയ്താലും റൗണ്ടിംഗ് പൊടി ഒരിക്കലും അടിഞ്ഞുകൂടില്ല.
Boring Expenses ഇതിനപ്പുറം ഒരു പടി കടന്ന് തുകകൾ വളരെ സൂക്ഷ്മമായ ഉപ-യൂണിറ്റുകളിൽ സൂക്ഷിക്കുന്നു (“ഒരു പൂർണ്ണ യൂണിറ്റിന് 10 കോടി” എന്ന് സങ്കൽപ്പിക്കൂ); ഇത് കറൻസികൾക്കും ഭാവി ആവശ്യങ്ങൾക്കും ധാരാളം ഇടം നൽകുന്നു, അതേസമയം എല്ലാം ഒരു സാധാരണ Int ആയി തുടരുന്നു. സ്ക്രീനിൽ നിങ്ങൾ കാണുന്നതിലേക്കും അതിൽ നിന്നുമുള്ള പരിവർത്തനം അരികുകളിൽ മാത്രമാണ് — നിങ്ങൾ തുക ടൈപ്പ് ചെയ്യുമ്പോഴും, കാണിക്കാനായി ഞങ്ങൾ അത് ഫോർമാറ്റ് ചെയ്യുമ്പോഴും.
// ഉദാഹരണം മാത്രം, കൃത്യമായ കോഡല്ല:
let display = Decimal(amountInSubunits) / Decimal(subunitsPerUnit)
let text = display.formatted(.currency(code: userCurrency))
ഇത് നിങ്ങൾക്ക് എന്തുകൊണ്ട് പ്രധാനം
- ആകെത്തുകകൾ കൃത്യമാണ്. നിങ്ങളുടെ മാസത്തെ ആകെ യഥാർത്ഥ ആകെയാണ്, പട്ടിക വളരുന്തോറും ഒരു പൈസ തെന്നിമാറുന്ന സംഖ്യയല്ല.
- സിങ്ക് സ്ഥിരത പുലർത്തുന്നു. ഒരു പൂർണ്ണസംഖ്യയ്ക്ക് നിങ്ങളുടെ iPhone-ലും Watch-ലും iPad-ലും ഒരേ അർത്ഥമാണ്. ഒത്തുതീർക്കാൻ ഒരു അവ്യക്തതയുമില്ല.
- എക്സ്പോർട്ടുകൾ വിശ്വസിക്കാം. നിങ്ങൾ എക്സ്പോർട്ട് ചെയ്യുന്ന CSV ആപ്പുമായി പൈസയ്ക്ക് പൈസ യോജിക്കുന്നു.
ഇതൊരു ചെറിയ, ആഡംബരമില്ലാത്ത തീരുമാനമാണ് — ഞങ്ങൾക്ക് ഇഷ്ടമുള്ള തരം. നിങ്ങൾ ഇത് ഒരിക്കലും കാണില്ല, അതാണ് ഉദ്ദേശ്യം: സംഖ്യകൾ ശരിയായി കൂടുന്നു.