ฉันมีปัญหาบางอย่างในการจัดรูปแบบทศนิยมของคู่ ถ้าฉันมีค่าสองเท่าเช่น 4.0 ฉันจะจัดรูปแบบทศนิยมให้เป็น 4.00 แทนได้อย่างไร
ฉันมีปัญหาบางอย่างในการจัดรูปแบบทศนิยมของคู่ ถ้าฉันมีค่าสองเท่าเช่น 4.0 ฉันจะจัดรูปแบบทศนิยมให้เป็น 4.00 แทนได้อย่างไร
คำตอบ:
หนึ่งในวิธีการที่จะใช้NumberFormat
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
เอาท์พุท:
4.00
ด้วย Java 8 คุณสามารถใช้format
method .. : -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
ใช้สำหรับfloating
แต้ม ..2
หลังทศนิยมหมายถึงจำนวนตำแหน่งทศนิยมหลัง .
สำหรับเวอร์ชัน Java ส่วนใหญ่คุณสามารถใช้DecimalFormat
: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
ใช้String.format :
String.format("%.2f", 4.52135);
ตามเอกสาร:
Locale.getDefault()
สถานที่ใช้มักจะเป็นหนึ่งที่ส่งกลับโดย
โดยใช้ String.format คุณสามารถทำได้:
double price = 52000;
String.format("$%,.2f", price);
สังเกตลูกน้ำซึ่งทำให้สิ่งนี้แตกต่างจากคำตอบของ @ Vincent
เอาท์พุท:
$52,000.00
แหล่งข้อมูลที่ดีสำหรับการจัดรูปแบบคือหน้าจาวาอย่างเป็นทางการในหัวข้อนี้
คุณสามารถใช้วิธีการแบบคงที่ได้เสมอprintf from System.out
จากนั้นคุณจะใช้ฟอร์แมตเตอร์ที่เกี่ยวข้อง สิ่งนี้ช่วยประหยัดพื้นที่ฮีปซึ่งตัวอย่างอื่น ๆ ที่คุณต้องทำ
Ex:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
ประหยัดพื้นที่ฮีปซึ่งเป็นโบนัสที่ค่อนข้างใหญ่ แต่ฉันมีความเห็นว่าตัวอย่างนี้สามารถจัดการได้ดีกว่าคำตอบอื่น ๆ โดยเฉพาะอย่างยิ่งเนื่องจากโปรแกรมเมอร์ส่วนใหญ่รู้จักฟังก์ชัน printf จาก C (Java เปลี่ยนฟังก์ชัน / วิธีการเล็กน้อย)
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:
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(number));
ใช้ String.format:
System.out.println(String.format("%,.2f", number));
ใช้ DecimalFormat และรูปแบบ:
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(number);
System.out.println(fString);
ใช้ DecimalFormat และ pattern
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();
ซึ่งจะให้ทศนิยม 2 ตำแหน่งและใส่เครื่องหมายดอลลาร์หากเกี่ยวข้องกับสกุลเงิน
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
ฉันรู้ว่านี่เป็นหัวข้อเก่า แต่ถ้าคุณต้องการให้จุดแทนเครื่องหมายจุลภาคเพียงแค่บันทึกผลลัพธ์ของคุณเป็น X, 00 ลงในสตริงจากนั้นเพียงแค่เปลี่ยนเป็นช่วงเวลาเพื่อให้คุณได้รับ X.00
วิธีที่ง่ายที่สุดคือใช้การแทนที่
String var = "X,00";
String newVar = var.replace(",",".");
ผลลัพธ์จะเป็นX.00 ที่คุณต้องการ นอกจากนี้เพื่อให้ง่ายคุณสามารถทำได้ทั้งหมดในครั้งเดียวและบันทึกลงในตัวแปรคู่
Double var = Double.parseDouble(("X,00").replace(",",".");
ฉันรู้ว่าคำตอบนี้ไม่มีประโยชน์ในตอนนี้ แต่บางทีคนที่ตรวจสอบฟอรัมนี้อาจกำลังมองหาวิธีแก้ปัญหาอย่างรวดเร็วเช่นนี้
String.format()
หรือjava.text.Format
.