బ్లాగ్

Boring Expenses డబ్బును ఎలా నిల్వ చేస్తుంది (అది ఎందుకు పూర్ణాంకం)

  • ఇంజనీరింగ్
  • ios
  • swift

ఒక పైసా పోగొట్టుకోవడానికి ఇది క్లాసిక్ మార్గం. దాదాపు ఏ ప్రోగ్రామింగ్ భాషనైనా 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))

ఇది మీకు ఎందుకు ముఖ్యం

ఇది ఒక చిన్న, ఆడంబరం లేని నిర్ణయం — మాకు నచ్చే రకం. మీరు దీన్ని ఎప్పుడూ చూడరు, అదే ఉద్దేశం: అంకెలు సరిగ్గా కలుస్తాయి.