জাভাতে 2 দশমিক স্থান সহ একটি ফ্লোট কীভাবে প্রিন্ট করবেন?


উত্তর:


248

আপনি printfপদ্ধতিটি যেমন ব্যবহার করতে পারেন :

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

সংক্ষেপে, %.2fসিনট্যাক্সটি জাভাটিকে আপনার ভেরিয়েবলটি ( val2) দশমিক স্থান ( .2) সহ fফর্ম্যাট স্পেসিফায়ার ( %) বিন্যাসের সূচনা থেকে ভাসমান-পয়েন্ট সংখ্যা ( ) এর দশমিক উপস্থাপনে ফিরে আসতে বলে ।

এছাড়াও অন্যান্য রূপান্তর অক্ষর আপনি ব্যবহার করতে পারেন f:

  • d: দশমিক পূর্ণসংখ্যা
  • o: অক্টাল পূর্ণসংখ্যা
  • e: বৈজ্ঞানিক স্বরলিপি মধ্যে ভাসমান পয়েন্ট

13
স্ট্রিং.ফর্ম্যাট আপনার বর্তমান স্থানীয় কনফিগারেশনের উপর নির্ভরশীল হিসাবে দয়া করে সাবধান থাকুন, আপনি বিভাজক হিসাবে কোনও বিন্দু নাও পেতে পারেন। ব্যবহার পছন্দ করুনString.format(java.util.Locale.US,"%.2f", val);
গমনো

1
@ গোমিনো কেন নেই Locale.FRANCE?
ইরিকসন

3
নিখুঁতভাবে তাহলে কেন আপনি ফরাসি ব্যবহারকারীদের জন্য সংখ্যায় বিন্দু রাখবেন?
এরিকসন

1
আমি এই মন্তব্যটি এমন লোকদের সতর্ক করতে একটি অনুস্মারক হিসাবে যুক্ত করেছি যারা সর্বদা বিভাজক হিসাবে বিন্দু হিসাবে থাকতে পারে বলে আশা করে।
গমনো

6
@ গামিনো এটি উপলব্ধি করে তবে আমি মনে করি হার্ড কোডিং "পছন্দ" করা 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
এইটা. এটি এখনও একটি বিকল্প - আপনি নিজের উত্তরটি মুছে ফেলতে পারেন;)
বোঝো

দেখে মনে হচ্ছে এটি আমার বিকল্প, আমি কীভাবে এখনও ডেসিমাল ফর্ম্যাটটি ব্যবহার করতে জানি না :) ধন্যবাদ!
via_point

আমি কিছুক্ষণের মধ্যে বিস্তৃত জাভা কাজ করিনি, এবং আমি DecimalFormatউত্তরগুলি দেখতে থাকি সাথে সাথেই আমি ভেবেছিলাম আমার ভুল ছিল, তবে এটি পরিষ্কার করার জন্য আপনাকে ধন্যবাদ।
অ্যান্টনি ফোরলনি

9
df.setMinimumFractionDigits(2);দুটি অঙ্ক জোর করে যোগ করুন
টেরেল

88

আমি আপনার কোডটিতে মান হিসাবে প্রয়োজন হলে স্ট্রিং.ফর্ম্যাট () ব্যবহার করার পরামর্শ দেব 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 প্রদর্শন করতে চাই তবে আমি কীভাবে করব?
মোধর 9 ই

2
@ মোহার9e ব্যবহারDecimalFormat df = new DecimalFormat("0.00");
কে.সোফেক

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

4
লোকেলের উপর নির্ভর করে আপনি কমা পেতে পারেন। আপনি যদি কোনও বিন্দু বিভাজক চান, এটি ব্যবহার করুন: ডেসিমালফর্ম্যাট ("#। ##", ডেসিমালফোর্ম্যাট সিম্বলস (লোকাল.ইউএস)
ডিপিএম

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
এটি ভুল, আপনার সংখ্যা ১০০ দ্বারা ভাগ হওয়ার পরে অনেকগুলি সংখ্যা ভাসমান উপস্থাপনায় পুনরাবৃত্তি করবে Hence সুতরাং দুটি দশমিক স্থান নয়।
ম্যাট

8

আপনি নীচে এই দ্রুত কোডগুলি ব্যবহার করতে পারেন যা শেষে নিজেই পরিবর্তিত হয়েছিল। বিন্দুটির পরে উল্লেখ করা যায় যে কতগুলি শূন্য রয়েছে

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

ভেরিয়েবল y1 এর আগে 0.123456789 এর সমান ছিল । কোড পরে এটি 0.12 এ পরিণত হয় ।


2
এটি বিন্দুর আগে 0 প্রদর্শন করে না। এটি ডেসিমালফর্ম্যাট ডিএফ = নতুন দশমিক ফরম্যাট ("0.00") হওয়া উচিত;
রিধুદર્શન

অবশ্যই! ডেসিমালফর্ম্যাট ("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(",", ".");আপনি যদি এটির ব্যবহারকারীর লোকেল থেকে স্বতন্ত্রভাবে নিশ্চিত করতে চান তবে কেবল করুন, আপনি সর্বদা একটি "প্রদর্শন / প্রদর্শন" পাবেন " দশমিক বিভাজক হিসাবে আপনি যদি পরে কোনও ধরণের রূপান্তর পছন্দ করেন তবে আপনি যদি আপনার প্রোগ্রামটিকে ক্র্যাশ করতে না চান তবে এটি অবশ্যই আবশ্যকfloat f = Float.parseFloat(str);


1

একটি সমস্যা যা আমাকে এক ঘন্টা বা তার বেশি সময় ধরে রেখেছিল DecimalFormat- এটি ডাবল এবং ফ্লোট ইনপুটগুলি ভিন্নভাবে পরিচালনা করে। এমনকি রাউন্ডিংমডের পরিবর্তনও কোনও উপকারে আসেনি। আমি কোনও বিশেষজ্ঞ নই তবে ভেবেছিলাম এটি আমার মতো কাউকে সাহায্য করতে পারে। 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);
      }


 }

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.