像商品价格,订单,结算都会涉及到一些金额的问题,为了避免精度丢失通常会做一些处理,常规的系统中金额一般精确到小数点后两位,也就是分;

这样数据库在设计的时候金额就直接存储整型数据类型,前端可以将金额X100以分为单位传给后端,后端进行一系列逻辑处理后要以元为单位返回前端直接展示,

这时候就可以定义一个简单的处理工具来转换:

public class MoneyConvert {

//分转换为元,返回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();

}

}

//分转换为元,返回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("不支持的数据类型,%s",t.getClass()));

}

return amount;

}

}

//转换类

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;

}

}

//结果展示:

金额转换java_java金额转换相关推荐

  1. java 交易金额转换分,java金额元与分转换工具种

    java金额元与分转换工具类 java金额元与分转换的一个工具类. 1.元转分: 可传入字符串或者long型(隐式转换为long型也可)整数. 若传入为字符串,则通过替换小数点的方式转换,小数点有多位 ...

  2. 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整

    金额转换,阿拉伯数字转换成中国传统形式. 例如:101000001010   转换为   壹仟零壹拾亿零壹仟零壹拾圆整 package com.itheima;import java.util.Arr ...

  3. 金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整

    public class Test{ // 定义三个字符数组,把中文的数字形式存储下来,再下面代码中获取下标,设置对应中文 private static char[] hunit = { '拾', ' ...

  4. java练习:金额转换,阿拉伯数字转换成中文传统形式

    需求:金额转换,阿拉伯数字转换成中文传统形式   ,例如 101000001010   转为     壹仟零壹拾亿零壹仟零壹拾圆整 最终版: import java.util.Scanner; pub ...

  5. 金额转换(数字转换中文老写)

    金额转换(数字转换中文老写) /*** @auther 倪万佳* @date 2018/10/19 23:08*/ public class RenMingBi {private static fin ...

  6. python编程实现人民币和美元的互相转换_java人民币转换美元的实验报告

    实验名称: 综合图形界面程序设计 实验目的和要求:学习和理解 JAVA SWING 中的容器,部件,布局管理器和部件 事件处理方法.通过编写和调试程序,掌握 JAVA 图形界面程序设计的基本方 法. ...

  7. pdf转ppt怎么转换,pdf转换ppt的方法分享

    工作中为了方便我们在对文件的查看和应用,都会遇到过文件格式的相互转换吧,如果在工作中碰到了PDF文件转换成PPT文件的时候,我们要用什么样的方式转换最容易而又不出错呢,下面小编为大家分享一下小编常用的 ...

  8. PHP是弱类型语言,自动转换,强制转换

    强制转换: (int) - 转换成整型 (bool) - 转换.成布尔型 (float) - 转换成浮点型 (string) - 转换成字符串 (array) - 转换成数组 (object) - 转 ...

  9. Java数据类型转换(自动转换和强制转换)

    数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然"进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转 ...

最新文章

  1. 介绍几个好用的android自定义控件
  2. 操作系统和Web服务器那点事儿
  3. Vue.js指令实例
  4. FileSystemResource 和ClassPathResource 有何区别?
  5. Flutter实战视频-移动电商-45.详细页_说明区域UI编写
  6. tomcat启动(五)Catalina分析-service.init
  7. Kali Linux 秘籍 第三章 高级测试环境
  8. 14-1 获得初始页面内容
  9. python list函数使用总结_python——list总结
  10. 从NASA获取全球气象数据
  11. 区块链开发入门书籍推荐
  12. Bert源代码(二)模型
  13. 领域驱动设计,为何又死灰复燃了?
  14. mysql call_mysql call用法:调用存储过程
  15. URLRewrite地址重定向的实现
  16. VS2005 项目怎样添加“依赖”、“库目录”和“包含目录”
  17. usnews美国大学计算机科学排名,最新!2019年USNews美国大学计算机专业排名
  18. 索尼ILCE-7SM3覆盖恢复案例
  19. openlayers4 入门开发系列之风场图篇
  20. 汉诺塔python3函数编写和过程分析

热门文章

  1. express 项目生成器_用于项目的Express模板生成器(2)| 应用程序结构研究
  2. java方法重载和重载方法_我们可以在Java中重载main()方法吗?
  3. Google Guava,牛逼的脚手架
  4. jQuery.html()方法ie下不能设置html代码的问题
  5. C# 读取照片的EXIF信息
  6. python3、sqlmap下载与安装教程
  7. c语言既能读字母也能读数字,2014计算机二级考试C语言考前预测选择题
  8. java自定义标签遍历_自定义标签 - CarlDing的个人页面 - OSCHINA - 中文开源技术交流社区...
  9. idea序列化自动生成_serialVersionUID在数据序列化中重要性
  10. linux uefi无法启动文件,解决UEFI安装无法启动的问题