ब्लॉग
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 ॲपशी पैशापैशाने जुळते.
हा एक छोटा, साधासुधा निर्णय आहे — नेमका आम्हाला आवडतो तसा. तुम्हाला तो कधीच दिसणार नाही, आणि हाच मुद्दा आहे: आकडे फक्त बरोबर जुळतात.