जावा - तीसरे दशमलव मान के आधार पर दो दशमलव स्थान पर राउंड [डुप्लिकेट]
Dec 16 2020
मैं 5 वीं कक्षा के स्कूल के छात्र की तरह एक दिन के लिए इस पर बैठा हूं।
public class Tester
{
static String actualValue = "";
private static DecimalFormat df2 = new DecimalFormat("#.##"); //To round off to two decimal places.
static double regPrice = 0.0;
static double regPrice2 = 0.0;
public static void main(String[] args)
{
regPrice2 = 1506.365;
System.out.println("reg price 1 is: "+regPrice2);
System.out.println("reg price 1 after rounding is is: "+round(regPrice2));
regPrice = 8535.765;
System.out.println("reg price is: "+regPrice);
System.out.println("reg price after rounding is: "+round(regPrice));
}
public static double round(double value)
{
df2.setRoundingMode(RoundingMode.HALF_UP);
String returnValue = df2.format(value);
double actualValue = Double.parseDouble(returnValue);
return actualValue;
}
}
उत्पादन | मान १ | मान २ |
---|---|---|
वास्तविक | 1506.37 है | 8535. 76 |
अपेक्षित होना | 1506.37 है | 8535. 77 |
पहले नंबर के लिए काम करना बंद क्यों है लेकिन दूसरे नंबर पर नहीं? मै इसे काम मे कैसे ले सकता हूँ?
जवाब
1 TomášZáluský Dec 16 2020 at 07:51
फ्लोटिंग-पॉइंट्रेसेशन के लिए धन्यवाद, जो आप सोचते हैं कि 1506.365 या 8535.765 वास्तव में आपकी अपेक्षा से थोड़ा अधिक या कम है। फ्लोटिंग-पॉइंट नंबरों को मंटिसा और एक्सपोनेंट के रूप में दर्शाया गया है। इसलिए उदाहरण के लिए 0.365 और 0.765 की गोलाई अलग-अलग होती है। हाल्ट के पास गोलाई फिर यादृच्छिक दिशा में दिखाई देती है। BigDecimal
यदि आपको एक सटीक संख्या की आवश्यकता है तो उपयोग करें ।