ডাবলের দশমিক দশকে ফর্ম্যাট করতে আমার কিছু সমস্যা হচ্ছে। আমার যদি দ্বিগুণ মান হয়, যেমন 4.0.০, তবে আমি দশমিকগুলি কীভাবে বিন্যাস করব যাতে এটি পরিবর্তে ৪.০০ হয়?
ডাবলের দশমিক দশকে ফর্ম্যাট করতে আমার কিছু সমস্যা হচ্ছে। আমার যদি দ্বিগুণ মান হয়, যেমন 4.0.০, তবে আমি দশমিকগুলি কীভাবে বিন্যাস করব যাতে এটি পরিবর্তে ৪.০০ হয়?
উত্তর:
এর মধ্যে একটির নাম্বার ফোরাম ব্যবহার করা হবে ।
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
আউটপুট:
4.00
জাভা 8 এর সাহায্যে আপনি format
পদ্ধতিটি ব্যবহার করতে পারেন ..: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
floating
বিন্দু মানের জন্য ব্যবহৃত হয় ..2
দশমিক চিহ্নের পরে দশমিক স্থানের পরে সংখ্যা .
বেশিরভাগ জাভা সংস্করণের জন্য আপনি ব্যবহার করতে পারেন DecimalFormat
: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
স্ট্রিং.ফর্ম্যাট ব্যবহার করুন :
String.format("%.2f", 4.52135);
ডক্স অনুসারে:
সর্বদা ব্যবহৃত লোকেলটি সেই দ্বারা ফিরে আসে
Locale.getDefault()
।
স্ট্রিং.ফর্ম্যাট ব্যবহার করে আপনি এটি করতে পারেন:
double price = 52000;
String.format("$%,.2f", price);
কমাটি লক্ষ্য করুন যা এটি @ ভিনসেন্টের উত্তর থেকে আলাদা করেছে
আউটপুট:
$52,000.00
বিন্যাসের জন্য একটি ভাল উত্স হ'ল বিষয়টির সরকারী জাভা পৃষ্ঠা
আপনি সর্বদা স্থিতিশীল পদ্ধতিটি ব্যবহার printf from System.out
করতে পারবেন - আপনি তার পরে সংশ্লিষ্ট ফর্ম্যাটরটি প্রয়োগ করবেন; এটি হ্যাপ স্পেস সংরক্ষণ করে যেখানে অন্যান্য উদাহরণগুলির জন্য আপনাকে করা দরকার।
উদা:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
হ্যাপ স্পেসটি সংরক্ষণ করে যা একটি দুর্দান্ত বড় বোনাস, তবুও আমি এই মতামতটি ধরে রাখি যে এই উদাহরণটি অন্য যে কোনও উত্তরের চেয়ে অনেক বেশি পরিচালনাযোগ্য, বিশেষত যেহেতু বেশিরভাগ প্রোগ্রামার সি থেকে প্রিন্টফ ফাংশন জানেন (জাভা ফাংশন / পদ্ধতিটি কিছুটা পরিবর্তিত করে)।
out
হয় PrintStream
।
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
new DecimalFormat("#0.00").format(4.0d);
ক্লাস setMinimumFractionDigits
থেকে পদ্ধতিটি ব্যবহার করা একটি বিকল্প পদ্ধতি NumberFormat
।
এখানে আপনি মূলত নির্দিষ্ট করে নিন যে দশমিক পয়েন্টের পরে আপনি কত নম্বর দেখতে চান।
সুতরাং একটি নির্দিষ্ট ইনপুট 4.0
উত্পাদন হবে 4.00
, ধরে নিবেন আপনার নির্দিষ্ট পরিমাণ 2।
তবে, যদি আপনার Double
ইনপুটটিতে উল্লিখিত পরিমাণের চেয়ে বেশি থাকে, তবে এটি নির্দিষ্ট করা সর্বনিম্ন পরিমাণ গ্রহণ করবে, তারপরে আরও নীচে একটি গোল যোগ করবে
উদাহরণস্বরূপ, 4.15465454
সর্বনিম্ন 2 টি নির্দিষ্ট পরিমাণের সাথে উত্পাদিত হবে4.155
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));
আপনি এটি করতে পারেন এমন অনেকগুলি উপায় রয়েছে। এগুলি বোকা দেওয়া হয়:
ধরুন আপনার আসল নম্বরটি নীচে দেওয়া হয়েছে:
double number = 2354548.235;
নাম্বার ফর্ম্যাট ব্যবহার:
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(number));
স্ট্রিং.ফর্ম্যাট ব্যবহার:
System.out.println(String.format("%,.2f", number));
ডেসিমালফর্ম্যাট এবং প্যাটার্ন ব্যবহার করে:
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(number);
System.out.println(fString);
ডেসিমালফর্ম্যাট এবং প্যাটার্ন ব্যবহার করে
DecimalFormat decimalFormat = new DecimalFormat("############.##");
BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
System.out.println(formattedOutput);
সমস্ত ক্ষেত্রে আউটপুট হবে: 2354548.23
দ্রষ্টব্য :
রাউন্ডিংয়ের সময় RoundingMode
আপনি আপনার ফর্ম্যাটারে যুক্ত করতে পারেন । বেলো দেওয়া কিছু রাউন্ডিং মোড এখানে রয়েছে:
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
এখানে আমদানি করা হয় :
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
আপনি নীচের যে কোনও একটি পদ্ধতি ব্যবহার করতে পারেন
আপনি যদি ব্যবহার করছেন java.text.DecimalFormat
DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance();
decimalFormat.setMinimumFractionDigits(2);
System.out.println(decimalFormat.format(4.0));
অথবা
DecimalFormat decimalFormat = new DecimalFormat("#0.00");
System.out.println(decimalFormat.format(4.0));
আপনি যদি এটিকে সাধারণ স্ট্রিং ফর্ম্যাটে রূপান্তর করতে চান
System.out.println(String.format("%.2f", 4.0));
উপরের সমস্ত কোড 4.00 প্রিন্ট করবে
100% কাজ করে।
import java.text.DecimalFormat;
public class Formatting {
public static void main(String[] args) {
double value = 22.2323242434342;
// or value = Math.round(value*100) / 100.0;
System.out.println("this is before formatting: "+value);
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
}
}
প্রথম আমদানি NumberFormat
। তারপরে এটি যুক্ত করুন:
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
এটি আপনাকে দুটি দশমিক স্থান দেবে এবং যদি এটি মুদ্রার সাথে লেনদেন করে তবে ডলার সাইন রাখবে।
import java.text.NumberFormat;
public class Payroll
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
int hoursWorked = 80;
double hourlyPay = 15.52;
double grossPay = hoursWorked * hourlyPay;
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
}
}
আপনি নিম্নলিখিত হিসাবে এটি করতে পারেন:
double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
##
পরিবর্তে ব্যবহার করছে বলে কাজ করে না00
আমি জানি যে এটি একটি পুরানো বিষয়, তবে আপনি যদি কমাটির পরিবর্তে পিরিয়ডটি পছন্দ করতে চান তবে এক্স, 00 হিসাবে আপনার ফলাফলটি কেবল একটি স্ট্রিংয়ে সংরক্ষণ করুন এবং কেবলমাত্র একটি সময়ের জন্য এটি পরিবর্তন করুন যাতে আপনি X.00 পান you
সহজতম উপায় হ'ল প্রতিস্থাপন ব্যবহার করা।
String var = "X,00";
String newVar = var.replace(",",".");
আউটপুটটি আপনি চেয়েছিলেন X.00 হবে । এটিকে সহজ করার জন্য আপনি এটি একসাথে করতে এবং এটি একটি ডাবল ভেরিয়েবলে সংরক্ষণ করতে পারেন:
Double var = Double.parseDouble(("X,00").replace(",",".");
আমি জানি যে এই উত্তরটি এখনই কার্যকর নয় তবে এই ফোরামটি যাচাই করে এমন কেউ এর মতো দ্রুত সমাধান খুঁজছেন।
String.format()
বাjava.text.Format
।