BigDecimal
অবিরাম রূপান্তর নিশ্চিত করার জন্য শ্রেণীর কয়েকটি দরকারী পদ্ধতি রয়েছে:
byteValueExact()
shortValueExact()
intValueExact()
longValueExact()
তবে, পদ্ধতি floatValueExact()
এবং doubleValueExact()
অস্তিত্ব নেই।
আমি পদ্ধতি জন্য OpenJDK সোর্স কোড পড়া floatValue()
এবং doubleValue()
। উভয়ই যথাক্রমে ফ্যালব্যাক হিসাবে উপস্থিত হয় Float.parseFloat()
এবং এটি Double.parseDouble()
ইতিবাচক বা নেতিবাচক অসীম ফিরে আসতে পারে। উদাহরণস্বরূপ, 10,000 9s এর স্ট্রিংকে পার্স করা ইতিবাচক অনন্তিকে ফিরে আসবে। যেমনটি আমি বুঝতে পারি, BigDecimal
অনন্তের কোনও অভ্যন্তরীণ ধারণা নেই। আরও, 100 9s এর স্ট্রিংকে double
দেয় হিসাবে বিশ্লেষণ করে 1.0E100
যা অনন্ত নয়, তবে নির্ভুলতা হারিয়ে ফেলে।
একটি যুক্তিসঙ্গত বাস্তবায়ন কি floatValueExact()
এবং doubleValueExact()
?
আমি একটি সম্পর্কে চিন্তা double
সমাধান মিশ্রন দ্বারা BigDecimal.doubleValue()
, BigDecial.toString()
, Double.parseDouble(String)
এবং Double.toString(double)
, কিন্তু এটা নোংরা দেখায়। আমি এখানে জিজ্ঞাসা করতে চাই কারণ একটি সহজ সমাধান হতে পারে (অবশ্যই!)
পরিষ্কার হওয়ার জন্য, আমার উচ্চতর পারফরম্যান্স সমাধানের দরকার নেই।