คำถามติดแท็ก bigdecimal

BigDecimal เป็นประเภทวัตถุตัวเลขใน Java ที่แสดงถึงตัวเลขทศนิยมด้วยความแม่นยำโดยพลการ

6
จะพิมพ์ค่า BigDecimal ที่จัดรูปแบบได้อย่างไร
ผมมีBigDecimalข้อมูลamountซึ่งหมายถึงเงินและฉันต้องพิมพ์ค่าในเบราว์เซอร์ในรูปแบบเช่น$123.00, ,$15.50$0.33 ฉันจะทำเช่นนั้นได้อย่างไร? (วิธีแก้ปัญหาง่ายๆเพียงวิธีเดียวที่ฉันเห็นว่าตัวเองกำลังได้รับfloatValueจากBigDecimalนั้นใช้NumberFormatเพื่อสร้างความแม่นยำสองหลักสำหรับส่วนเศษส่วน)

3
BigDecimal - เพื่อใช้ new หรือ valueOf
ฉันเจอสองวิธีในการดึงวัตถุ BigDecimal ออกจาก d สองเท่า 1. new BigDecimal(d) 2. BigDecimal.valueOf(d) จะเป็นแนวทางไหนดี มูลค่าของการสร้างวัตถุใหม่หรือไม่? โดยทั่วไป (ไม่ใช่แค่ BigDecimal) สิ่งที่แนะนำ - new หรือ valueOf? ขอบคุณ.
102 java  bigdecimal 

14
เป็นตัวแทนของค่าเงินใน Java [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันเข้าใจว่า BigDecimal แนะนำแนวทางปฏิบัติที่ดีที่สุดในการแสดงมูลค่าเงินใน Java คุณใช้อะไร? มีห้องสมุดที่ดีกว่าที่คุณต้องการใช้แทนหรือไม่?


1
จะทราบได้อย่างไรว่า BigDecimal สามารถแปลงให้ลอยหรือเป็นสองเท่าได้อย่างแน่นอน
Class BigDecimalมีวิธีการที่เป็นประโยชน์ในการรับประกันการแปลงแบบไม่สูญเสีย byteValueExact() shortValueExact() intValueExact() longValueExact() อย่างไรก็ตามวิธีการfloatValueExact()และdoubleValueExact()ไม่ได้อยู่ ผมอ่านรหัสที่มา OpenJDK สำหรับวิธีการและfloatValue() doubleValue()ทั้งคู่ดูเหมือนจะย้อนกลับไปที่Float.parseFloat()และDouble.parseDouble()ตามลำดับซึ่งอาจส่งกลับอินฟินิตี้บวกหรือลบ ตัวอย่างเช่นการแยกสตริง 10,000 9s จะส่งกลับค่าบวกอนันต์ อย่างที่ฉันเข้าใจBigDecimalไม่มีแนวคิดเกี่ยวกับอินฟินิตี้ภายใน นอกจากนี้การแยกสตริงของ 100 9s ตามที่doubleให้1.0E100ซึ่งไม่ได้ไม่มีที่สิ้นสุด แต่สูญเสียความแม่นยำ การใช้งานที่เหมาะสมคืออะไรfloatValueExact()และdoubleValueExact()? ฉันคิดว่าเกี่ยวกับdoubleการแก้ปัญหาโดยการรวมBigDecimal.doubleValue(), BigDecial.toString(), Double.parseDouble(String)และDouble.toString(double)แต่มันดูยุ่ง ฉันต้องการถามที่นี่เพราะอาจมี (ต้อง!) เป็นวิธีที่ง่ายกว่า เพื่อความชัดเจนฉันไม่ต้องการโซลูชันประสิทธิภาพสูง
10 java  bigdecimal 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.