ฉันต้องการแปลงจำนวนเต็ม 35634646 เพื่อให้มีค่าเป็นพัน "," ดังนั้นควรเป็น 35,634,646
อะไรจะเป็นวิธีที่รวดเร็วที่สุดในการทำสิ่งนั้น?
ฉันต้องการแปลงจำนวนเต็ม 35634646 เพื่อให้มีค่าเป็นพัน "," ดังนั้นควรเป็น 35,634,646
อะไรจะเป็นวิธีที่รวดเร็วที่สุดในการทำสิ่งนั้น?
คำตอบ:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,
อย่างไรก็ตามยังมีภูมิภาคที่ใช้.
สำหรับการจัดกลุ่มแทน คำหนึ่งการเข้ารหัสแบบโลแคลถือว่าเป็นวิธีปฏิบัติที่ไม่ดี
Locale.getCurrent()
คือทางออก
คุณถามหาที่เร็วที่สุด แต่บางทีคุณอาจหมายถึง "ดีที่สุด" หรือ "ถูกต้อง" หรือ "ปกติ"?
คุณขอให้จุลภาคระบุจำนวนพันด้วย แต่บางทีคุณอาจหมายถึง "ในรูปแบบที่มนุษย์สามารถอ่านได้ตามประเพณีท้องถิ่นของผู้ใช้ของคุณ"?
คุณทำเช่นนั้น:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
ชาวอเมริกันจะได้รับ "35,634,646"
ชาวเยอรมันจะได้รับ "35.634.646"
ชาวสวิสชาวเยอรมันจะได้รับ "35'634'646"
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
จำนวนเต็ม:
int value = 100000;
String.format("%,d", value); // outputs 100,000
คู่ผสม:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
- แก้ไขต่อข้อเสนอแนะpsuzzi
String.format
ได้ดูใน มันเริ่มต้นด้วยreturn new Formatter(l) ...
ฯลฯ ดังนั้นอาร์กิวเมนต์ตัวรวบรวมขยะจึงไม่แข็งแรงเท่าที่ควร
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
เอาท์พุท: 35,634,646
#,###
#,##,###
,
เอาท์พุถ้าวิ่งที่สถานที่เริ่มต้นไม่นับพันแยกต่างหากที่มี
คำตอบอื่น ๆ นั้นถูกต้องอย่างไรก็ตามโปรดตรวจสอบสถานที่ของคุณอีกครั้งก่อนใช้"%,d"
:
Locale.setDefault(Locale.US);
int bigNumber = 35634646;
String formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Locale.setDefault(new Locale("pl", "PL"));
formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
ผลลัพธ์:
35,634,646
35 634 646
วิธีนี้ใช้ได้ผลสำหรับฉัน:
NumberFormat.getNumberInstance(Locale.US).format(Integer.valueOf("String Your Number"));
ใช้ตัว%d
ระบุรูปแบบด้วยเครื่องหมายจุลภาค:%,d
นี่คือวิธีที่ง่ายที่สุด
หากต้องทำสิ่งเดียวกันใน JSP ให้ใช้:
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
ofcourse สำหรับหลายค่าใช้:
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
นี่เป็นวิธีแก้ปัญหาสำหรับผู้ที่ไม่สามารถเข้าถึง "numberformat" หรือ "String.format" (โดยใช้จาวารุ่นที่ จำกัด ภายในกรอบงาน) หวังว่ามันจะมีประโยชน์
number= 123456789;
thousandsSeparator=",";
myNumberString=number.toString();
numberLength=myNumberString.length;
howManySeparators=Math.floor((numberLength-1)/3)
formattedString=myNumberString.substring(0,numberLength-(howManySeparators*3))
while (howManySeparators>0) {
formattedString=formattedString+thousandsSeparator+myNumberString.substring(numberLength-(howManySeparators*3),numberLength-((howManySeparators-1)*3));
howManySeparators=howManySeparators-1; }
formattedString
ใช้ส่วนขยาย
import java.text.NumberFormat
val Int.commaString: String
get() = NumberFormat.getInstance().format(this)
val String.commaString: String
get() = NumberFormat.getNumberInstance().format(this.toDouble())
val Long.commaString: String
get() = NumberFormat.getInstance().format(this)
val Double.commaString: String
get() = NumberFormat.getInstance().format(this)
ผลลัพธ์
1234.commaString => 1,234
"1234.456".commaString => 1,234.456
1234567890123456789.commaString => 1,234,567,890,123,456,789
1234.456.commaString => 1,234.456
คุณไม่สามารถใช้
System.out.printf("%n%,d",int name);
เครื่องหมายจุลภาคใน the printf
ควรเพิ่มเครื่องหมายจุลภาคใน%d
inter
ไม่ดีเลย แต่ได้ผลกับฉัน
ก่อนอื่นคุณต้องรวมแท็ก JSTL: -
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
ที่จุดเริ่มต้นของหน้า
import java.text.NumberFormat;
ผมต้องเพิ่ม