जवाबों:
आप printf
विधि का उपयोग कर सकते हैं , जैसे:
System.out.printf("%.2f", val);
संक्षेप में, %.2f
सिंटैक्स जावा को आपके चर ( val
) को 2 फ़र्म स्थानों ( ) के साथ .2
फ़्लोटिंग-पॉइंट नंबर ( f
) के प्रारूप प्रतिरूप (आरंभ ) के दशमलव प्रतिनिधित्व में लौटाता है %
।
आपके द्वारा उपयोग किए जा सकने वाले अन्य रूपांतरण वर्ण हैं f
:
d
: दशमलव पूर्णांकo
: अष्टक पूर्णांकe
: वैज्ञानिक अंकन में फ्लोटिंग-पॉइंटLocale.FRANCE
?
Locale.US
बहुत दूर जाता है। यदि आपको केस-फोल्डिंग, नंबर रेंडरिंग आदि के लिए "तटस्थ" लोकेल को हार्ड-कोड करने की आवश्यकता है, तो निर्दिष्ट करें Locale.ROOT
। यह उन पाठों के लिए उपयुक्त होगा जो मानव उपयोगकर्ताओं के लिए प्रदान किए जाने के बजाय किसी अन्य प्रोग्राम द्वारा उपभोग किए जाएंगे। उपयोगकर्ता को प्रस्तुत पाठ के लिए, उनके स्थान का सम्मान करें, चाहे उन्होंने इसे स्पष्ट रूप से निर्दिष्ट किया हो या यह डिफ़ॉल्ट हो।
आप उपयोग कर सकते हैं DecimalFormat
। इसका उपयोग करने का एक तरीका:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
System.out.println(df.format(decimalNumber));
एक अन्य #.##
प्रारूप का उपयोग करके इसका निर्माण करना है ।
मुझे फ़ॉर्मेटिंग विधियों को कॉल करने की तुलना में सभी फ़ॉर्मेटिंग विकल्प कम पढ़ने योग्य लगते हैं, लेकिन यह प्राथमिकता का विषय है।
System.out.printf("%.2f", value)
वाक्य रचना के साथ क्या हुआ ? क्या यह अभी भी आसपास है?
DecimalFormat
उत्तर देखता रहा तो मैंने तुरंत सोचा था कि मैं गलत था, लेकिन यह स्पष्ट करने के लिए धन्यवाद।
df.setMinimumFractionDigits(2);
दो अंकों को जोड़ने के लिए जोड़ें
यदि आप अपने कोड में मान की आवश्यकता है तो मैं String.format () का उपयोग करने का सुझाव दूंगाString
।
उदाहरण के लिए, आप String.format()
निम्न तरीके से उपयोग कर सकते हैं :
float myFloat = 2.001f;
String formattedString = String.format("%.02f", myFloat);
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
DecimalFormat df = new DecimalFormat("0.00");
float f = 102.236569f;
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
float floatValue=22.34555f;
System.out.print(String.format("%.2f", floatValue));
आउटपुट 22.35 है। यदि आपको 3 दशमलव अंक चाहिए तो इसे "% .3f" में बदल दें।
कई लोगों ने उल्लेख किया है DecimalFormat
। लेकिन printf
अगर आप जावा के हालिया संस्करण का उपयोग कर सकते हैं :
System.out.printf("%1.2f", 3.14159D);
प्रिंटफ़ प्रारूप स्ट्रिंग के बारे में अधिक जानकारी के लिए फ़ॉर्मेटर पर डॉक्स देखें ।
एक साधारण ट्रिक यह है कि अपने वैरिएबल के एक छोटे संस्करण को उदाहरण के साथ गुणा करके 100
, उसे गोल करके और 100.0
फिर से विभाजित करके उत्पन्न किया जाए। इस तरह से आप 2 दशमलव स्थानों के साथ एक चर उत्पन्न करते हैं :
double new_variable = Math.round(old_variable*100) / 100.0;
यह "सस्ता चाल" हमेशा मेरे लिए काफी अच्छा था, और किसी भी भाषा में काम करता है (मैं जावा व्यक्ति नहीं हूं, बस इसे सीख रहा हूं)।
आप नीचे दिए गए इस त्वरित कोड का उपयोग कर सकते हैं जो अंत में स्वयं बदल गया। बिंदु के बाद संदर्भित के रूप में कितने शून्य जोड़ें
float y1 = 0.123456789;
DecimalFormat df = new DecimalFormat("#.00");
y1 = Float.valueOf(df.format(y1));
चर y1 पहले 0.123456789 के बराबर था । कोड के बाद यह केवल 0.12 में बदल जाता है ।
यहाँ ट्यूटोरियल से एक उदाहरण है:
DecimalFormat myFormatter = new DecimalFormat(pattern);
String output = myFormatter.format(value);
System.out.println(value + " " + pattern + " " + output);
यदि आप "###। ##" जैसा कोई पैटर्न चुनते हैं, तो आपको दो दशमलव स्थान मिलेंगे, और मुझे लगता है कि मानों को गोल किया गया है। आप चाहते हैं कि सटीक प्रारूप प्राप्त करने के लिए लिंक को देखना चाहते हैं (जैसे, चाहे आप शून्य लोड करना चाहते हैं)
ठीक है - फ्लोट के लिए स्ट्रेट।
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)
प्रदर्शन के लिए छोटा सा सरल कार्यक्रम:
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);
}
}
बस String str = System.out.printf("%.2f", val).replace(",", ".");
अगर आप यह सुनिश्चित करना चाहते हैं कि स्वतंत्र रूप से उपयोगकर्ता के स्थान के अनुसार, आपको हमेशा "a" मिलेगा। दशमलव विभाजक के रूप में। यदि आप बाद में किसी तरह का रूपांतरण करना चाहते हैं तो यह जरूरी है कि आप अपने कार्यक्रम को दुर्घटनाग्रस्त न करेंfloat f = Float.parseFloat(str);
एक मुद्दा जो मुझे एक घंटे या उससे अधिक के लिए था, पर 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
इसे इस्तेमाल करे:-
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);
}
}
String.format(java.util.Locale.US,"%.2f", val);