में दशमलव दशमलव निकालें BigDecimal का उपयोग कर दशमलव बिंदु के बाद एक संख्या को निकालने के लिए कैसे करें?BigDecimal
बिगडेसिमल डी = BigDecimal.valueOf (1548.5649);
परिणाम: निकालने केवल: 5649
में दशमलव दशमलव निकालें BigDecimal का उपयोग कर दशमलव बिंदु के बाद एक संख्या को निकालने के लिए कैसे करें?BigDecimal
बिगडेसिमल डी = BigDecimal.valueOf (1548.5649);
परिणाम: निकालने केवल: 5649
प्रयास करें:
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal result = d.subtract(d.setScale(0, RoundingMode.FLOOR)).movePointRight(d.scale());
System.out.println(result);
प्रिंट:
5649
प्रयास करें BigDecimal.remainder:
BigDecimal d = BigDecimal.valueOf(1548.5649);
BigDecimal fraction = d.remainder(BigDecimal.ONE);
System.out.println(fraction);
// Outputs 0.5649
इस चाल करना चाहिए:
d.subtract(d.setScale(0, RoundingMode.FLOOR));
setScale()
राउंड शून्य दशमलव स्थानों के लिए संख्या, और के बावजूद इसका नाम d
के मान को म्यूट नहीं करता है।
यह काम है ... धन्यवाद :) – Mehdi
आप जो लिखते ही परिणाम के रूप में चाहते हैं नहीं बताया प्राप्त करने की कोशिश।
String s = d.toPlainString();
int i = s.indexOf('.');
if (i < 0) {
return "";
}
return s.substring(i + 1);
यह केवल लोकेल के लिए उपयोग करता है। दशमलव विभाजक के रूप में। लेकिन Locales हैं जो उपयोग कर रहे हैं,। – BetaRide
@ बीटाराइड: मुझे पता है कि, मैं फ्रेंच बोल रहा हूं, और कॉमा का उपयोग यहां किया जाता है। लेकिन BigDecimal.toPlainString() लोकेल-जागरूक नहीं है। यह डॉट का उपयोग दशमलव विभाजक के रूप में करता है जो भी लोकेल है। –
यदि मान ऋणात्मक है, का उपयोग करते हुए सबसे आसान तरीका शायद एक स्ट्रिंग में BigDecimal को बदलने, और सबस्ट्रिंग लेने के लिए है d.subtract(d.setScale(0, RoundingMode.FLOOR))
एक गलत दशमलव को वापस कर देगा।
उपयोग इस:
BigInteger decimal =
d.remainder(BigDecimal.ONE).movePointRight(d.scale()).abs().toBigInteger();
यह रिटर्न या 1548.5649
के लिए 5649
-1548.5649
ध्यान दें: आप का उपयोग करना चाहिए 'BigDecimal.valueOf (" 1548.5649 ");' बजाय क्योंकि 'double' के बीच रूपांतरण और 'बिगडेसिमल' अजीब साइड इफेक्ट्स का कारण बन सकता है। यदि आपको परिशुद्धता की आवश्यकता है, तो 'डबल' और 'फ्लोट' से बचें। –
@AaronDigulla मुझे लगता है कि आपका मतलब नया BigDecimal ("1548.5649") है क्योंकि कोई BigDecimal.valueOf (स्ट्रिंग) विधि नहीं है। –