سلام.امروز 20 فروردین 1397 هست، یک مدت طولانی بود که در خدمت دوستای عزیزم نبودم.امیدوارم حالتون خوب و پر انرژی باشید 😊😊
یکی از همراهان سایت www.javapro.ir از بنده سوال کردن که چطور یک عدد از نوع double را تا دو رقم اعشار در جاوا نمایش دهیم؟
مثلا یک متغیر با نام a که از نوع double هست را به صورت زیر در جاوا داریم:
package start1397;
public class Test2 {
public static void main(String[] args) { doublea = 4.750089651125;
}
}
قصد داریم مقدار متغیر a را در خروجی چاپ کنیم:
package start1397;
public class Test2 {
public static void main(String[] args) { doublea = 4.750089651125;
System.out.println("value of a= "+a);
}
}
خروجی برنامه بالا به صورت زیر خواهد بود:
Output: value of a= 4.750089651125
در اینجا ما مقدار متغیر a را به صورت کامل با تمام رقم های اعشاری آن نمایش دادیم، گاهی نیاز داریم که یک عدد را تنها تا دو رقم اعشار نمایش دهیم، برای این کار به صورت زیر عمل میکنیم:
نمایش یک عدد اعشاری با استفاده از دستور printf
نحوه نوشتن یا سینتکس دستور printf به صورت زیر است:
System.out.printf(String format,Object... args);
• اولین پارامتر این دستور یک رشته (String) است که قالب بندی (formatting) خروجی مورد نظر را تعیین میکند.
• منظور از تعیین قالب بندی (formatting) خروجی این است که یک شی (object) ممکن است از نوع عدد صحیح(integer)، عدد اعشاری(floating point)، رشته(String)، کاراکتر(character) و... باشد، به همین خاطر باید ابتدا نوع قالب بندی مقداری که قراره در خروجی چاپ شود را تعیین کنیم.
پارامتر های موجود در دستور printf به دلیل این که میتواند نوع های مختلفی، از جمله عدد صحیح(integer)، عدد اعشاری(floating point)، رشته(String)، کاراکتر(character) و...داشته باشد، زمان اجرای برنامه همه این نوع ها را به نوع String تبدیل کرده و بر اساس قالب بندی تعیین شده چاپ میکند.
شاید یکم گیج شده باشید! اصلا نگران نباشید با مثال این مفاهیم رو یاد میگیرید.
• در مثال بالا مقدار متغیر صحیح a را در خروجی با استفاده از دستور printf چاپ کرده ایم.
System.out.printf("%d", a);
• چون متغیر a از نوع integer هست از قالب بندی "d%" استفاده کرده ایم.
• پس ابتدا قالب بندی متغیر مورد نظر را تعیین میکنیم و بعد از علامت ,(ویرگول) متغیر خود را صدا میزنیم.
• از دستور "d%" برای قالب بندی جهت چاپ اعداد صحیح با دستور printf استفاده میشود.
مثال: برای چاپ اعداد اعشاری با دستور printf:
package start1397;
public class Example1 {
public static void main(String[] args) { double a = 55.365;
System.out.printf("%f", a);
}
}
خروجی:
Output: 55.365000
• از دستور "f%" برای قالب بندی جهت چاپ اعداد اعشاری با دستور printf استفاده میشود.
System.out.printf("%f", a);
• همان طور که مشاهده میکنید در پارامتر اول دستور printf ابتدا نوع قالب بندی متغیر را تعیین کرده و در پارامتر دوم دستور printf متغیر را صدا میزنیم.
• همه این ها رو گفتیم که به اصل مطلب یعنی نمایش یک عدد اعشاری با تعداد دلخواه رقم اعشار برسیم 😊😊😊 در مثال بالا مقدار متغیر اعشاری a برابر 55.365 است،هنگام چاپ متغیر a، مقدار 55.365000 نمایش داده شده است! برای این که صفر های اضافی رو حذف کنیم و مقدار عدد اعشاری a را به صورت 55.365 در خروجی نمایش دهیم باید تعداد رقم اعشار را برای متغیر خود تعیین کنیم.برای این کار به صورت زیر عمل میکنیم:
• در برنامه بالا مقدار متغیر اعشاری a را تا سه رقم اعشار چاپ کرده ایم.
System.out.printf("%.3f", a);
• برای تعیین تعداد رقم اعشار یک متغیر از نوع اعشاری در جاوا کافیست به شکل قالب زیر عمل کنید:
مثلا برای متغیر a با تعداد رقم های اعشاری 4 دستور زیر را خواهیم داشت:
System.out.printf("%.4f", a);
• کافیست بعد از علامت% یک نقطه (.) وتعداد رقم اعشارو بعد از آن حرف fرا قرار دهیم.
مثال:
package start1397;
public class Test2 {
public static void main(String[] args) { doublea = 4.750089651125;
System.out.printf("value of a= %.2f", a);
}
}
خروجی:
Output:
value of a= 4.75
• در مثال بالا گفتیم مقدار متغیر اعشاری a که برابر 4.750089651125 است، را تنها با دو رقم اعشار نمایش دهد.
مثال:
package start1397; public class Test1 { // https://t.me/java like public static void main(String[] args) { doublea = 2.5; doubleb = 4.75; doublesum = a + b;
System.out.printf("%.2f",sum);
}
}
خروجی:
Output:
7.25
• در مثال بالا دو عدد اعشاری را جمع زده و گفتیم حاصل جمع آنها را با دو رقم اعشار نمایش دهد.
مثال:
package start1397;
public class Test1 { // https://t.me/java like public static void main(String[] args) { doublea = 2.154357; doubleb = 4.852147369147;
System.out.printf("a=%.1f\nb=%.9f ", a, b);
}
}
خروجی:
Output: a=2.2
b=4.852147369
• در این مثال همزمان دو متغیر اعشاری را با دستور printf چاپ کرده ایم.
• متغیر a را با یک رقم اعشار و متغیر b را با 9 رقم اعشار نمایش داده ایم.
• دستور n\ برای پرش به سطر بعد استفاده میشود.
تعیین تعداد رقم های اعشار یک عدد اعشاری با استفاده از دستور String.format
اگر قصد چاپ یک رشته (String) را ندارید و تنها میخواید برای استفاده، آن را فرمت بندی کنید از متد استاتیک format موجود درکلاس String استفاده میکنیم.روش کار این متد شبیه به دستور printf برای فرمت بندی متغیر مورد نظر است با این تفاوت که مقداری را چاپ نمیکند و در عوض مقدار متغیر فرمت بندی شده را به صورت یک String برای ما برمی گرداند.
با مثال توضیح میدهیم:
package start1397;
public class Test1 { // https://t.me/java like public static void main(String[] args) {
double a = 66.12369874;
• در برنامه بالا ما متغیر اعشاری a با مقدار برابر 66.12369874 را با دو رقم اعشار نمایش داده ایم.
String str = String.format("%.2f", a);
• در دستور بالا متد format به دلیل این که استاتیک هست با نام کلاس String آن را صدا زده ایم.
• متد format کار متد printf یعنی قالب بندی متغیر را برای ما انجام میدهد با این تفاوت که مقدار متغیر را چاپ نمیکند و مقدار قالب بندی شده متغیر را به صورت یک String برای ما برمی گرداند.
• در این جا به دلیل این که متغیر a از نوع عدد اعشاری است، قالب بندی را از نوع "f%" تعیین کرده و از طرفی چون که قراره متغیر a را تا دو رقم اعشار قالب بندی کنیم قالب بندی را به صورت "2f.%" مشخص میکنیم.
• حالا مقدار قالب بندی شده متغیر a را درون متغیر str که از نوع String است میریزیم.
System.out.println(str);
• در این دستور مقدار str را چاپ کرده ایم.
• کلا در این برنامه ما با استفاده از دستور String.format مقدار متغیر a را به صورت یک عدد اعشاری با دو رقم اعشار قالب بندی کردیم و درون یک متغیر String ریخته و آن را چاپ کرده ایم.
مثال: برنامه ای به زبان جاوا بنویسید که دو عدد از نوع اعشاری از ورودی بگیرد و مجموع آنها را حساب کرده و در خروجی چاپ کند.
توجه: حاصل جمع دو عدد تا دو رقم اعشار نمایش داده شود.
package start1397;
import java.util.Scanner;
public class Test1 { // https://t.me/java like public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter num1"); doublea = input.nextDouble();
System.out.println("Enter num2"); doubleb = input.nextDouble(); doublesum = a + b;
String str = String.format("%.2f", sum);
System.out.println("Out: "+ str);
}
}
خروجی: فرض کنید اعداد خود را به صورت زیر به عنوان ورودی به برنامه داده ایم:
Output: Enter num1
5.6689 Enter num2
1.8654
Out: 7.53
ما متغیرها با نوع های مختلف را میتوانیم با توجه به نیاز قالب بندی کنیم که در اینجا چون که هدفمون تعیین تعداد رقم اعشار یک عدد اعشاری بود بیشتر به نوع اعشاری پرداختیم. در آینده یک جلسه مجزا در مورد مبحث Java String Format تهیه خواهیم کرد. البته شما هم باید به ما یادآوری کنید😊😊😊
پیروز و موفق باشید
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)