בג'אווה, כאשר אנו משתמשים בסוג נתונים כפול לפני משתנה הוא מייצג 15 ספרות אחרי הנקודה העשרונית. אבל לפעמים אנחנו דורשים רק שני מקומות עשרוניים אחרי נקודות עשרוניות כמו לייצג רופי ויחידות אחרות. אז, בחלק זה, אנחנו הולכים לדון ב דרכים להציג כפול עד שני מקומות עשרוניים יחד עם דוגמה נכונה ותוכניות Java.
Java מספקת את שלוש הדרכים הבאות להצגת כפול ב-2 מקומות עשרוניים:
- שימוש DecimalFormat ('0.00')
- שימוש בשיטת String.format() ('%2f')
- שימוש ב-BigDecimal
הבה נדון בדרכים לעיל אחת אחת.
באמצעות DecimalFormat
Java DecimalFormat היא תת-מחלקה קונקרטית של המחלקה NumberFormat המשמשת לעיצוב המספרים העשרוניים. הכיתה מספקת את setRoundingMode() שיטה להצגת מספר כפול עד שני מקומות עשרוניים.
תחביר:
public void setRoundingMode(RoundingMode roundingMode)
הוא מקבל מצב עיגול כפרמטר ודובר את שיטת setRoundingMode() של ה- NumberFormat מעמד. זה זורק NullPointerException אם לא נציין שום roundingMode. הטבלה הבאה מתארת את מצבי העיגול השונים.
שים מספר | לְמַעלָה | מטה | תִקרָה | קוֹמָה | HALF_UP | HALF_DOWN | HALF_EVEN | מְיוּתָר |
---|---|---|---|---|---|---|---|---|
5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | לזרוק ArithmeticException |
2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | לזרוק ArithmeticException |
1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | לזרוק ArithmeticException |
1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | לזרוק ArithmeticException |
1.0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
-1.0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
-1.1 | -2 | -1 | -1 | -2 | -1 | -1 | -1 | לזרוק ArithmeticException |
-1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | לזרוק ArithmeticException |
-2.5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | לזרוק ArithmeticException |
-5.5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | לזרוק ArithmeticException |
השתמשנו בשיטה אחרת של המחלקה DecimalFormat היא פוּרמָט() שיטה. זה מעצב מחרוזת כדי לייצר מחרוזת.
תחביר:
מרובה
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
השיטה מקבלת שלושה פרמטרים מספר, תוצאה ומיקום. אבל שני הפרמטרים האחרונים הם אופציונליים. זה מחזיר את מחרוזת המספרים המעוצבת. השיטה זורקת ArithmeticException אם מצב עיגול נקבע ל מְיוּתָר.
TwoDecimalPlace1.java
import java.math.RoundingMode; import java.text.DecimalFormat; public class TwoDecimalPlace1 { //constructor of the DecimalFormat class private static final DecimalFormat decfor = new DecimalFormat('0.00'); public static void main(String args[]) { //defining a number of type double double num = 123.9876543567; System.out.println('Double Number: ' + num); System.out.println('Double Number: ' + decfor.format(num)); //123.99 //DecimalFormat, default is RoundingMode.HALF_EVEN decfor.setRoundingMode(RoundingMode.DOWN); System.out.println(' Before Rounding: ' + decfor.format(num)); //123.98 decfor.setRoundingMode(RoundingMode.UP); System.out.println('After Rounding Up: ' + decfor.format(num)); //123.99 } }
תְפוּקָה:
Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99
שימוש בשיטת String.format()
Java מספקת גם את שיטת format() לעיצוב המספר. זה שייך למחלקת String. על ידי שימוש בשיטה, ניתן לעצב כל מספר ומחרוזת בהתאם.
compareto ב-java
על מנת לשנות את המספר עד שני מקומות עשרוניים, אנו משתמשים %.2f כדי לעצב את המספר. שים לב שאיננו יכולים לעגל את המספר בשיטת String.format() , תמיד לעגל לחצי למעלה.
תחביר:
public static String format(String format, Object... args)
השיטה מקבלת את שני הפרמטרים הבאים:
פוּרמָט: זוהי מחרוזת מעוצבת שאנו רוצים.
args: אלו הם הארגומנטים שאליהם מתייחסים מפרטי הפורמט במחרוזת הפורמט.
זה מחזיר את המחרוזת המעוצבת. זה זורק חריגה בפורמט בלתי חוקי אם מחרוזת הפורמט מכילה תחביר לא חוקי. זה גם זורק NullPointerException אם נציין את הפורמט כ-null.
TwoDecimalPlace2.java
public class TwoDecimalPlace2 { public static void main(String args[]) { //defining a number of type double double num = 10.98765432167; System.out.println('Double Number: ' + num); //use either of the following two statements for two decimal places both gives the same result System.out.println('Double Number: ' + String.format('%.2f', num)); System.out.format('Double Number: %.2f', num); } }
תְפוּקָה:
Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99
שימוש ב-BigDecimal
אנו יכולים גם להשתמש ב-Java BigDecimal Class להצגת מספר עד שני מקומות עשרוניים. זה שייך ל java.math.BigDecimal חֲבִילָה. זה מרחיב את מחלקת Number ומיישם את בר השוואה מִמְשָׁק.
המחלקה מספקת את שיטת setScale() . התחביר הוא כדלקמן:
תחביר:
setScale(int newScale, RoundingMode roundingMode)
השיטה מקבלת שני פרמטרים:
קנה מידה חדש: קנה המידה של הערך BigDecimal שיש להחזיר.
roundingMode: מצב העיגול שאנו רוצים ליישם.
הוא מחזיר את ה-BigDecimal שקנה המידה שלו הוא הערך שצוין והערך הלא-מוקנה שלו נקבע על-ידי הכפלה או חלוקה של הערך הלא-מדורג של BigDecimal בחזקה המתאימה של עשר כדי לשמור על הערך הכולל שלו.
השיטה זורקת את ArithmeticException אם מצב עיגול נקבע ל מְיוּתָר . RoundingMode הוא רשימה שמספקת את RoundingMode שנדון לעיל.
עדכון מ- join sql
שיטה נוספת בה השתמשנו בתוכנית זו היא BigDecimal.doubleValue(). זה ממיר BigDecimal ל-a לְהַכפִּיל מספר. בואו נראה דוגמה.
TwoDecimalPlace3.java
import java.math.BigDecimal; import java.math.RoundingMode; public class TwoDecimalPlace3 { public static void main(String args[]) { //defining a number of type double double num = 12.4565652239; System.out.println('Double Number: ' + num); BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP); double newNum = bd.doubleValue(); System.out.println('Up to two decimal places: ' + newNum); } }
תְפוּקָה:
Double Number: 12.4565652239 Up to two decimal places: 12.46