我目前的点餐机项目,之前有一个需求:
根据用户点餐后需要付款的金额,给出推荐现金数额。
如下图 , 客户需支付5.5元,这边给出快捷收银预估值
如下图,客户需要支付44元,这边给出快捷收银预估值
这其实是4个宽度权重为1的TextView:
fun initView(){
textCoin?.text = "" + getMoneyUp(mShouldPrice, 1) + "元"
textCoin1?.text = "" + getMoneyUp(mShouldPrice, 2) + "元"
if (StringUtils.getMoneyUp(mShouldPrice, 3).trim().equals("0")) {
textCoin2?.visibility = View.GONE
} else {
textCoin2?.text = "" + getMoneyUp(mShouldPrice, 3) + "元"
}
if (StringUtils.getMoneyUp(mShouldPrice, 4).trim().equals("0")) {
textCoin3?.visibility = View.GONE
} else {
textCoin3?.text = "" + getMoneyUp(mShouldPrice, 4) + "元"
}
}
//获取强入取整
fun getMoneyUp(bigDecimal: BigDecimal?, type: Int?):String{
when (type){
1 -> {
return "" + bigDecimal?.setScale(0, BigDecimal.ROUND_CEILING)
}
2 -> {
return "" + bigDecimal?.divide(BigDecimal(10), 0, BigDecimal.ROUND_CEILING)?.setScale(0, BigDecimal.ROUND_HALF_UP)?.multiply(BigDecimal(10))
}
3 -> {
return "" + bigDecimal?.divide(BigDecimal(100), 1, BigDecimal.ROUND_CEILING)?.setScale(1, BigDecimal.ROUND_HALF_UP)?.setScale(0, BigDecimal.ROUND_HALF_UP)?.multiply(BigDecimal(100))
}
4 -> {
return "" + bigDecimal?.divide(BigDecimal(1000), 2, BigDecimal.ROUND_CEILING)?.setScale(2, BigDecimal.ROUND_HALF_UP)?.setScale(1, BigDecimal.ROUND_HALF_UP)?.setScale(0, BigDecimal.ROUND_HALF_UP)?.multiply(BigDecimal(1000))
}
}
return ""
}