金额转换java_java金额转换
像商品價格,訂單,結(jié)算都會涉及到一些金額的問題,為了避免精度丟失通常會做一些處理,常規(guī)的系統(tǒng)中金額一般精確到小數(shù)點后兩位,也就是分;
這樣數(shù)據(jù)庫在設(shè)計的時候金額就直接存儲整型數(shù)據(jù)類型,前端可以將金額X100以分為單位傳給后端,后端進行一系列邏輯處理后要以元為單位返回前端直接展示,
這時候就可以定義一個簡單的處理工具來轉(zhuǎn)換:
public class MoneyConvert {
//分轉(zhuǎn)換為元,返回string類型
public String centToDollarForString(T t){
if (t == null) {
return "0";
} else {
BigDecimal amount = getBigDecimal(t);
amount = amount.divide(new BigDecimal(100));
return amount.toString();
}
}
//分轉(zhuǎn)換為元,返回double類型
public Double centToDollarForDouble(T t){
if (t == null) {
return 0D;
} else {
BigDecimal amount = getBigDecimal(t);
amount = amount.divide(new BigDecimal(100));
return amount.doubleValue();
}
}
private BigDecimal getBigDecimal(T t) {
BigDecimal amount;
if(t instanceof Integer){
amount = new BigDecimal(t.toString());
}
else if(t instanceof Long){
amount = new BigDecimal(t.toString());
}
else if(t instanceof String){
amount=new BigDecimal(t.toString());
}
else{
throw new RuntimeException(String.format("不支持的數(shù)據(jù)類型,%s",t.getClass()));
}
return amount;
}
}
//轉(zhuǎn)換類
public class IntegerCentToStringDollar extends JsonSerializer {
@Override
public void serialize(Integer value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
gen.writeNumber(new MoneyConvert().centToDollarForString(value));
}
}
import com.blogs.common.utils.IntegerCentToStringDollar;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
//在需要處理的字段上加上注解@JsonSerialize(using = IntegerCentToStringDollar.class)
public class TestVo {
private Integer id;
@JsonSerialize(using = IntegerCentToStringDollar.class)
private Integer money;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getMoney() {
return money;
}
public void setMoney(Integer money) {
this.money = money;
}
}
@RestController
public class Demo {
@RequestMapping("/test")
public TestVo testMoneyConvert(){
TestVo vo=new TestVo();
vo.setId(1);
vo.setMoney(123);
return vo;
}
}
//結(jié)果展示:
總結(jié)
以上是生活随笔為你收集整理的金额转换java_java金额转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring批量写入mysql数据库_M
- 下一篇: 代码里无图片地址_项目实战:爬高清图片