আমি বুঝতে পারি যে বিগডিসিমাল জাভাতে আর্থিক মান উপস্থাপনের জন্য সেরা অনুশীলনের সুপারিশ করা হয়। তুমি কি ব্যবহার কর? আপনি কি এর চেয়ে আরও ভাল গ্রন্থাগার ব্যবহার করতে চান?
আমি বুঝতে পারি যে বিগডিসিমাল জাভাতে আর্থিক মান উপস্থাপনের জন্য সেরা অনুশীলনের সুপারিশ করা হয়। তুমি কি ব্যবহার কর? আপনি কি এর চেয়ে আরও ভাল গ্রন্থাগার ব্যবহার করতে চান?
উত্তর:
BigDecimal
সর্বদিকে. আমি শুনেছি কিছু লোক তাদের নিজস্ব Cash
বা Money
ক্লাস তৈরি করেছে যা মুদ্রার সাথে নগদ মানকে আবদ্ধ করে, তবে ত্বকের নিচে এটি এখনও একটি BigDecimal
, সম্ভবত BigDecimal.ROUND_HALF_EVEN
গোলাকার।
সম্পাদনা: ডন তাঁর উত্তরে যেমন উল্লেখ করেছেন , সেখানে টাইমেন্ডমনিয়ের মতো উন্মুক্ত উত্সাহিত প্রকল্প রয়েছে এবং বিকাশকারীদের চাকাটি পুনরায় সঞ্চারিত করা থেকে বিরত রাখার চেষ্টা করার জন্য আমি তাদের প্রশংসা করি, আমার কেবল প্রাক-আলফা লাইব্রেরি ব্যবহারের পর্যাপ্ত আত্মবিশ্বাস নেই এটি একটি উত্পাদন পরিবেশে। এছাড়া, আপনি যদি ফণা অধীন চারপাশে খুঁড়ে দেখা হবে তারা ব্যবহার BigDecimal
খুব ।
জোদামনি সম্পর্কে জানতে সার্চ ইঞ্জিন দ্বারা এখানে আগত লোকদের জন্য এটি কার্যকর হতে পারে: http://www.joda.org/joda-money/ ।
BigDecimal
হুডের নীচে এটি দেখে আনন্দিত !
আমি এখানে আমার মতামত প্রকাশ করছি না, তবে বিগডিসিমালের বিরুদ্ধে বেশ ভাল যুক্তি রয়েছে যে কারও পক্ষে সম্ভবত তা ছড়িয়ে দেওয়া উচিত:
http://lemnik.wordpress.com/2011/03/25/bigdecimal-and-your-money/
একটি সুবিধাজনক লাইব্রেরি যা আমি আগে গিয়েছিলাম তা হ'ল জোডা-মানি লাইব্রেরি। এর একটি বাস্তবায়ন বিগডিসিমালের উপর ভিত্তি করে imal এটি মুদ্রাগুলির জন্য আইএসও -২২১17 স্পেসিফিকেশনের উপর ভিত্তি করে এবং কাস্টমাইজড মুদ্রা তালিকার (সিভিএসের মাধ্যমে লোড হওয়া) সমর্থন করতে পারে।
এই লাইব্রেরিতে সংক্ষিপ্ত সংখ্যক ফাইল রয়েছে যা পরিবর্তনগুলির প্রয়োজন হলে দ্রুত যেতে পারে। জোদা-মানি অ্যাপাচি ২.০ লাইসেন্সের আওতায় প্রকাশিত হয়েছে।
যদি আপনি কেবল ডলার এবং সেন্ট ব্যবহার করেন তবে আমি একটি দীর্ঘ ব্যবহার করব (2 দশমিক জায়গায় অফসেট)। আপনার যদি আরও বিশদ প্রয়োজন হয় তবে বড় দশমিক হ'ল উপায়।
যে কোনও উপায়ে, আমি সম্ভবত ক্লাসটি প্রসারিত করে একটি টু স্ট্রিং () যা সঠিক ফর্ম্যাট ব্যবহার করে এবং অন্য যে পদ্ধতিগুলি আসতে পারে সেগুলি রাখার জায়গা হিসাবে (দীর্ঘকাল ধরে, গুণ করা এবং ভাগ করা দশমিক নয়, তবে উদ্বেগজনক হবে) সমন্বয় করা হবে না)
এছাড়াও, আপনি যদি নিজের শ্রেণি এবং ইন্টারফেসটি সংজ্ঞায়িত করেন তবে আপনি ইচ্ছায় বাস্তবায়নটি প্রতিস্থাপন করতে পারেন।
BigDecimal
বা অন্য একটি নির্দিষ্ট পয়েন্ট প্রতিনিধিত্ব যা সাধারণত অর্থের জন্য প্রয়োজন is
ভাসমান পয়েন্ট ( Double
, Float
) উপস্থাপনা এবং গণনাগুলি নির্ভুল, ভ্রান্ত ফলাফলের দিকে পরিচালিত করে।
সময় এবং অর্থের সাথে লেনদেন করার সময় আপনাকে এতো যত্নবান হতে হবে।
আপনি যখন অর্থ নিয়ে কাজ করছেন, আমি আশা করি প্রত্যেকের কখনই ভাসা বা ডাবল ব্যবহার করা উচিত নয়।
তবে আমি বিগডিসিমাল সম্পর্কে অনিশ্চিত।
বেশিরভাগ ক্ষেত্রে আপনি যদি ঠিক কোনও সেন্ট বা দীর্ঘ সময় ধরে সেন্ট ট্র্যাক করেন তবে আপনি ভাল থাকবেন। এইভাবে আপনি কোনও দশমিক স্থান নিয়ে কাজ করেন না।
আপনি কেবল এটি মুদ্রণ করলে ডলার প্রদর্শন করবেন। সর্বদা পূর্ণসংখ্যার সাহায্যে অভ্যন্তরীণ সেন্টগুলির সাথে কাজ করুন। বিভক্ত করার প্রয়োজন হলে বা ম্যাথ.এবস () ব্যবহার করার প্রয়োজন হলে এটি জটিল হতে পারে।
তবে আপনি যত্ন নিতে পারেন অর্ধ শতাংশ, এমনকি শতভাগের এক শততমও। আমি জানি না এটি করার ভাল উপায় কী। আপনার কেবল হাজারতম সেন্ট নিয়ে কাজ করতে হবে এবং একটি দীর্ঘ ব্যবহার করতে হবে। অথবা হতে পারে আপনি বিগডিসিমাল ব্যবহার করতে বাধ্য হবেন
আমি এটিতে আরও অনেক বেশি পড়তে চাই, তবে অর্থের প্রতিনিধিত্ব করতে কোনও ফ্লোট বা ডাবল ব্যবহারের বিষয়ে কথা বলতে শুরু করা প্রত্যেককে উপেক্ষা করুন। তারা কেবল ঝামেলা চাইছে।
আমি অনুভব করি আমার পরামর্শ সম্পূর্ণ নয়, সুতরাং দয়া করে এতে আরও কিছু দিন। আপনি বিপজ্জনক ধরণের সাথে লেনদেন করছেন!
একটি আরও ভাল গ্রন্থাগার আছে, সময়সম্পর্কিত । আইএমও, এই 2 টি ধারণাকে উপস্থাপনের জন্য জেডিকে সরবরাহিত লাইব্রেরিগুলির তুলনায় এটি অনেক উন্নত।
অবশ্যই বিগডিসিমাল নয়। রাউন্ডিং এবং উপস্থাপনার জন্য অনেকগুলি বিশেষ বিধি রয়েছে যা সম্পর্কে আপনাকে চিন্তিত হতে হবে।
মার্টিন ফাউলর মুদ্রার পরিমাণ উপস্থাপনের জন্য একটি নিবেদিত মানি ক্লাস প্রয়োগের পরামর্শ দেয় এবং এটি মুদ্রা রূপান্তরের নিয়মও প্রয়োগ করে।
আরে, এখানে বিগডিসিমালের একটি খুব আকর্ষণীয় নিবন্ধ এবং কেন কখনও কখনও এটি ডাবলগুলির পরিবর্তে ব্যবহৃত হয় তার একটি চিত্রণমূলক উদাহরণ। বিগডিসিমাল টিউটোরিয়াল ।
শেষ পর্যন্ত কোনও মুদ্রার মান প্রদর্শন করার সময় আপনি ডেসিমালফর্ম্যাট ক্লাসটি ব্যবহার করতে পারেন। এটি স্থানীয়করণ সহায়তা সরবরাহ করে এবং এটি বেশ এক্সটেনসিবল।
আমি বিগডিসিমালকে মানি ক্লাসে এমপ্যাপুলেট করব যেটিতে কারও উপরে একটি মুদ্রা রয়েছে যেমন উপরে বর্ণিত আছে। গুরুত্বপূর্ণ বিষয়টি হল আপনি একক পরিমাণে ইউনিট পরীক্ষা করেন এবং বিশেষত যদি বিভিন্ন মুদ্রার সাথে কাজ করেন। এছাড়াও যদি আপনি কোনও দৃin়প্রতিজ্ঞ কন্সট্রাক্টর যুক্ত করেন যা স্ট্রিং বা কারখানার পদ্ধতি গ্রহণ করে যাতে আপনি নিজের পরীক্ষাগুলি এই জাতীয় কিছু লিখতে পারেন তবে তা যুক্ত করুন:
assertEquals(Money.create("100.0 USD").add("10 GBP"),Money.create("116 USD"));
সর্বদা জড়িত সীমাবদ্ধতা এবং নির্দিষ্টকরণ রয়েছে। নিম্নলিখিত নিবন্ধে বর্ণিত সূক্ষ্ম বিষয়গুলির প্রশংসা করার জন্য পর্যাপ্ত অভিজ্ঞতাহীন যে কোনও ব্যক্তির বাস্তব-বিশ্ব আর্থিক তথ্য নিয়ে কাজ করার আগে গুরুত্ব সহকারে পুনর্বিবেচনা করা উচিত:
http://lemnik.wordpress.com/2011/03/25/bigdecimal-and-your-money
বিগডিসিমাল কেবলমাত্র সঠিক প্রতিনিধিত্ব বা ধাঁধাটির একমাত্র অংশ। নির্দিষ্ট শর্ত দেওয়া হয়েছে, একটি পূর্ণসংখ্যা হিসাবে সঞ্চিত সেন্ট দ্বারা সমর্থিত মানি ক্লাস ব্যবহার করা যথেষ্ট হতে পারে এবং বিগডিসিমালের চেয়ে অনেক দ্রুত হবে। হ্যাঁ, এটি মুদ্রা এবং সীমাবদ্ধতার পরিমাণ হিসাবে ডলারের ব্যবহারকে বোঝায় তবে এই জাতীয় সীমাবদ্ধতা অনেকগুলি ব্যবহারের ক্ষেত্রে পুরোপুরি গ্রহণযোগ্য এবং সমস্ত মুদ্রার যে কোনওভাবেই রাউন্ডিং এবং সাব-ডিনোমিনেশনগুলির জন্য বিশেষ মামলা রয়েছে, সুতরাং কোনও "সার্বজনীন" সমাধান নেই।