ฉันอ่านเจอบางที่ที่คณะกรรมการตัดสินของ Java ตัดสินใจว่าเมธอด setPrecision
บน BigDecimal
คงจะโง่มาก เนื่องจากมี setScale
อยู่แล้ว
สิ่งที่โง่กว่านั้นคือการที่ผู้ใช้ API มีวิธีการเช่นนี้ในโค้ดของพวกเขา:
private fun getBigDecimalWith16DigitPrecision(value: BigDecimal): BigDecimal {
return when {
value < BigDecimal.ONE -> value.setScale(16, RoundingMode.HALF_UP)
value < BigDecimal(10) -> value.setScale(15, RoundingMode.HALF_UP)
value < BigDecimal(100) -> value.setScale(14, RoundingMode.HALF_UP)
value < BigDecimal(1000) -> value.setScale(13, RoundingMode.HALF_UP)
value < BigDecimal(10000) -> value.setScale(12, RoundingMode.HALF_UP)
else -> value.setScale(11, RoundingMode.HALF_UP)
}
}
ซึ่งไม่ได้ครอบคลุมทุกกรณีด้วยซ้ำ
BigDecimal
มีเมธอดsetPrecision
ไม่ได้รับมัน. - person ernest_k   schedule 21.01.2020BigDecimal("33.23").setPrecision(5) == BigDecimal("33.230")
,BigDecimal("33.23").setPrecision(2) == BigDecimal("33")
. - person Alexey Romanov   schedule 21.01.2020