जावा में 2 दशमलव स्थानों के साथ फ्लोट कैसे प्रिंट करें?


जवाबों:


249

आप printfविधि का उपयोग कर सकते हैं , जैसे:

System.out.printf("%.2f", val);

संक्षेप में, %.2fसिंटैक्स जावा को आपके चर ( val) को 2 फ़र्म स्थानों ( ) के साथ .2फ़्लोटिंग-पॉइंट नंबर ( f) के प्रारूप प्रतिरूप (आरंभ ) के दशमलव प्रतिनिधित्व में लौटाता है %

आपके द्वारा उपयोग किए जा सकने वाले अन्य रूपांतरण वर्ण हैं f:

  • d: दशमलव पूर्णांक
  • o: अष्टक पूर्णांक
  • e: वैज्ञानिक अंकन में फ्लोटिंग-पॉइंट

13
कृपया सावधान रहें क्योंकि String.format आपके वर्तमान स्थानीय कॉन्फ़िगरेशन पर निर्भर करता है, आपको एक विभाजक के रूप में एक डॉट नहीं मिल सकता है। का उपयोग कर पसंद करते हैंString.format(java.util.Locale.US,"%.2f", val);
Gomino

1
@gomino क्यों नहीं Locale.FRANCE?
इरकॉन

3
@gomino बिल्कुल। तो आप फ्रांसीसी उपयोगकर्ताओं के लिए संख्या में डॉट्स क्यों डालेंगे?
इरिकसन

1
मैंने इस टिप्पणी को उन लोगों को चेतावनी देने के लिए एक अनुस्मारक के रूप में जोड़ा, जो हमेशा एक विभाजक के रूप में एक डॉट की उम्मीद करते हैं।
गोमिनो

6
@gomino जो समझ में आता है, लेकिन मुझे लगता है कि हार्ड-कोडिंग "पसंद" करना Locale.USबहुत दूर जाता है। यदि आपको केस-फोल्डिंग, नंबर रेंडरिंग आदि के लिए "तटस्थ" लोकेल को हार्ड-कोड करने की आवश्यकता है, तो निर्दिष्ट करें Locale.ROOT। यह उन पाठों के लिए उपयुक्त होगा जो मानव उपयोगकर्ताओं के लिए प्रदान किए जाने के बजाय किसी अन्य प्रोग्राम द्वारा उपभोग किए जाएंगे। उपयोगकर्ता को प्रस्तुत पाठ के लिए, उनके स्थान का सम्मान करें, चाहे उन्होंने इसे स्पष्ट रूप से निर्दिष्ट किया हो या यह डिफ़ॉल्ट हो।
इरिकसन

179

आप उपयोग कर सकते हैं DecimalFormat। इसका उपयोग करने का एक तरीका:

DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));

एक अन्य #.##प्रारूप का उपयोग करके इसका निर्माण करना है ।

मुझे फ़ॉर्मेटिंग विधियों को कॉल करने की तुलना में सभी फ़ॉर्मेटिंग विकल्प कम पढ़ने योग्य लगते हैं, लेकिन यह प्राथमिकता का विषय है।


11
System.out.printf("%.2f", value)वाक्य रचना के साथ क्या हुआ ? क्या यह अभी भी आसपास है?
एंथनी फोर्लोनी

6
यह है। यह अभी भी एक विकल्प है - आप अपने जवाब को रद्द कर सकते हैं;)
बूझो

ऐसा लगता है कि यह मेरा विकल्प है, क्योंकि मुझे नहीं पता कि अभी तक DecimalFormat का उपयोग कैसे किया जाता है :) धन्यवाद!
via_point

मैंने कुछ समय में व्यापक जावा कार्य नहीं किया है, और जब मैं DecimalFormatउत्तर देखता रहा तो मैंने तुरंत सोचा था कि मैं गलत था, लेकिन यह स्पष्ट करने के लिए धन्यवाद।
एंथनी फोर्लोनी

9
df.setMinimumFractionDigits(2);दो अंकों को जोड़ने के लिए जोड़ें
Terel

88

यदि आप अपने कोड में मान की आवश्यकता है तो मैं String.format () का उपयोग करने का सुझाव दूंगाString

उदाहरण के लिए, आप String.format()निम्न तरीके से उपयोग कर सकते हैं :

float myFloat = 2.001f;

String formattedString = String.format("%.02f", myFloat);

14
"% .02f" और "% .2f" एक ही बात है
बोरज़

40
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

5
हाय केविन, अगर 10.0000 दर्ज करें, तो मुझे केवल 10 मिल रहे हैं। अगर मैं 10.00 प्रदर्शित करना चाहता हूं तो मैं कैसे कर सकता हूं?
Mdhar9e

2
@ Mdhar9e उपयोगDecimalFormat df = new DecimalFormat("0.00");
K.Sopheak

16
float f = 102.236569f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24

4
स्थान के आधार पर आपको अल्पविराम मिल सकता है। यदि आप एक डॉट विभाजक चाहते हैं, तो इसका उपयोग करें: DecimalFormat ("#। ##", DecimalFormatSymbols (Locale.US))
DPM

10
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));

आउटपुट 22.35 है। यदि आपको 3 दशमलव अंक चाहिए तो इसे "% .3f" में बदल दें।


9

कई लोगों ने उल्लेख किया है DecimalFormat। लेकिन printfअगर आप जावा के हालिया संस्करण का उपयोग कर सकते हैं :

System.out.printf("%1.2f", 3.14159D);

प्रिंटफ़ प्रारूप स्ट्रिंग के बारे में अधिक जानकारी के लिए फ़ॉर्मेटर पर डॉक्स देखें


9

एक साधारण ट्रिक यह है कि अपने वैरिएबल के एक छोटे संस्करण को उदाहरण के साथ गुणा करके 100, उसे गोल करके और 100.0फिर से विभाजित करके उत्पन्न किया जाए। इस तरह से आप 2 दशमलव स्थानों के साथ एक चर उत्पन्न करते हैं :

double new_variable = Math.round(old_variable*100) / 100.0;

यह "सस्ता चाल" हमेशा मेरे लिए काफी अच्छा था, और किसी भी भाषा में काम करता है (मैं जावा व्यक्ति नहीं हूं, बस इसे सीख रहा हूं)।


1
यह गलत है, कई संख्याएँ आपके द्वारा 100 में विभाजित होने के बाद फ्लोट प्रतिनिधित्व में संख्या दोहरा रही होंगी। इसलिए दो दशमलव स्थानों पर नहीं।
मैट

8

आप नीचे दिए गए इस त्वरित कोड का उपयोग कर सकते हैं जो अंत में स्वयं बदल गया। बिंदु के बाद संदर्भित के रूप में कितने शून्य जोड़ें

float y1 = 0.123456789;
DecimalFormat df = new DecimalFormat("#.00");  
y1 = Float.valueOf(df.format(y1));

चर y1 पहले 0.123456789 के बराबर था । कोड के बाद यह केवल 0.12 में बदल जाता है ।


2
यह बिंदु से पहले 0 प्रदर्शित नहीं करता है। यह DecimalFormat df = new DecimalFormat ("0.00") होना चाहिए;
रिधुदर्शन

पक्का! DecimalFormat ("0.00") भी काम करेगा! शानदार स्पॉट।
बे

6

DecimalFormat को देखें

यहाँ ट्यूटोरियल से एक उदाहरण है:

  DecimalFormat myFormatter = new DecimalFormat(pattern);
  String output = myFormatter.format(value);
  System.out.println(value + "  " + pattern + "  " + output);

यदि आप "###। ##" जैसा कोई पैटर्न चुनते हैं, तो आपको दो दशमलव स्थान मिलेंगे, और मुझे लगता है कि मानों को गोल किया गया है। आप चाहते हैं कि सटीक प्रारूप प्राप्त करने के लिए लिंक को देखना चाहते हैं (जैसे, चाहे आप शून्य लोड करना चाहते हैं)


5

नीचे कोड है कि आप जावा में 2 दशमलव स्थानों के साथ फ्लोट डेटा का आउटपुट कैसे प्रदर्शित कर सकते हैं:

float ratingValue = 52.98929821f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsFR = Float.valueOf(decimalFormat.format(ratingValue)); // output is 52.98

3

ठीक है - फ्लोट के लिए स्ट्रेट।

package test;

import java.text.DecimalFormat;

public class TestPtz {
  public static void main(String[] args) {
    String preset0 = "0.09,0.20,0.09,0.07";
    String[] thisto = preset0.split(",");    
    float a = (Float.valueOf(thisto[0])).floatValue();
    System.out.println("[Original]: " + a);   
    a = (float) (a + 0.01);

    // Part 1 - for display / debug
    System.out.printf("[Local]: %.2f \n", a);
    // Part 2 - when value requires to be send as it is
    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(2);
    df.setMaximumFractionDigits(2);
    System.out.println("[Remote]: " + df.format(a));

  }
}

आउटपुट:

run:
[Original]: 0.09
[Local]: 0.10 
[Remote]: 0.10
BUILD SUCCESSFUL (total time: 0 seconds)

1

प्रदर्शन के लिए छोटा सा सरल कार्यक्रम:

import java.io.*;
import java.util.Scanner;

public class twovalues {

    public static void main(String args[]) {

        float a,b;
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter Values For Calculation");

        a=sc.nextFloat();
        b=sc.nextFloat();

        float c=a/b;
        System.out.printf("%.2f",c);
    }
}

1

बस String str = System.out.printf("%.2f", val).replace(",", ".");अगर आप यह सुनिश्चित करना चाहते हैं कि स्वतंत्र रूप से उपयोगकर्ता के स्थान के अनुसार, आपको हमेशा "a" मिलेगा। दशमलव विभाजक के रूप में। यदि आप बाद में किसी तरह का रूपांतरण करना चाहते हैं तो यह जरूरी है कि आप अपने कार्यक्रम को दुर्घटनाग्रस्त न करेंfloat f = Float.parseFloat(str);


1

एक मुद्दा जो मुझे एक घंटे या उससे अधिक के लिए था, पर DecimalFormat- यह दोहरे और फ्लोट इनपुट को अलग तरीके से संभालता है। यहां तक ​​कि RoundingMode के परिवर्तन ने भी मदद नहीं की। मैं कोई विशेषज्ञ नहीं हूं, लेकिन मुझे लगा कि यह मेरे जैसे किसी की मदद कर सकता है। के Math.roundबजाय का उपयोग कर समाप्त हो गया । निचे देखो:

    DecimalFormat df = new DecimalFormat("#.##");
    double d = 0.7750;
    System.out.println(" Double 0.7750 -> " +Double.valueOf(df.format(d)));
    float f = 0.7750f;
    System.out.println(" Float 0.7750f -> "+Float.valueOf(df.format(f)));
    // change the RoundingMode
    df.setRoundingMode(RoundingMode.HALF_UP);
    System.out.println(" Rounding Up Double 0.7750 -> " +Double.valueOf(df.format(d)));
    System.out.println(" Rounding Up Float 0.7750f -> " +Float.valueOf(df.format(f)));

आउटपुट:

Double 0.7750 -> 0.78
Float 0.7750f -> 0.77

Rounding Up Double 0.7750 -> 0.78
Rounding Up Float 0.7750f -> 0.77

0

इसे इस्तेमाल करे:-

private static String getDecimalFormat(double value) {

    String getValue = String.valueOf(value).split("[.]")[1];

      if (getValue.length() == 1) {
          return String.valueOf(value).split("[.]")[0] +
                "."+ getValue.substring(0, 1) + 
                String.format("%0"+1+"d", 0);
       } else {
          return String.valueOf(value).split("[.]")[0]
            +"." + getValue.substring(0, 2);
      }


 }

अधिक जानकारी के लिए: - makecodesimpleandeasy.blogspot.com/2019/08/…
Nathani Software
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.