金额转换java_java金额转换
像商品价格,订单,结算都会涉及到一些金额的问题,为了避免精度丢失通常会做一些处理,常规的系统中金额一般精确到小数点后两位,也就是分;
这样数据库在设计的时候金额就直接存储整型数据类型,前端可以将金额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金额转换相关推荐
- java 交易金额转换分,java金额元与分转换工具种
java金额元与分转换工具类 java金额元与分转换的一个工具类. 1.元转分: 可传入字符串或者long型(隐式转换为long型也可)整数. 若传入为字符串,则通过替换小数点的方式转换,小数点有多位 ...
- 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
金额转换,阿拉伯数字转换成中国传统形式. 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整 package com.itheima;import java.util.Arr ...
- 金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
public class Test{ // 定义三个字符数组,把中文的数字形式存储下来,再下面代码中获取下标,设置对应中文 private static char[] hunit = { '拾', ' ...
- java练习:金额转换,阿拉伯数字转换成中文传统形式
需求:金额转换,阿拉伯数字转换成中文传统形式 ,例如 101000001010 转为 壹仟零壹拾亿零壹仟零壹拾圆整 最终版: import java.util.Scanner; pub ...
- 金额转换(数字转换中文老写)
金额转换(数字转换中文老写) /*** @auther 倪万佳* @date 2018/10/19 23:08*/ public class RenMingBi {private static fin ...
- python编程实现人民币和美元的互相转换_java人民币转换美元的实验报告
实验名称: 综合图形界面程序设计 实验目的和要求:学习和理解 JAVA SWING 中的容器,部件,布局管理器和部件 事件处理方法.通过编写和调试程序,掌握 JAVA 图形界面程序设计的基本方 法. ...
- pdf转ppt怎么转换,pdf转换ppt的方法分享
工作中为了方便我们在对文件的查看和应用,都会遇到过文件格式的相互转换吧,如果在工作中碰到了PDF文件转换成PPT文件的时候,我们要用什么样的方式转换最容易而又不出错呢,下面小编为大家分享一下小编常用的 ...
- PHP是弱类型语言,自动转换,强制转换
强制转换: (int) - 转换成整型 (bool) - 转换.成布尔型 (float) - 转换成浮点型 (string) - 转换成字符串 (array) - 转换成数组 (object) - 转 ...
- Java数据类型转换(自动转换和强制转换)
数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中"悄然"进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转 ...
最新文章
- 介绍几个好用的android自定义控件
- 操作系统和Web服务器那点事儿
- Vue.js指令实例
- FileSystemResource 和ClassPathResource 有何区别?
- Flutter实战视频-移动电商-45.详细页_说明区域UI编写
- tomcat启动(五)Catalina分析-service.init
- Kali Linux 秘籍 第三章 高级测试环境
- 14-1 获得初始页面内容
- python list函数使用总结_python——list总结
- 从NASA获取全球气象数据
- 区块链开发入门书籍推荐
- Bert源代码(二)模型
- 领域驱动设计,为何又死灰复燃了?
- mysql call_mysql call用法:调用存储过程
- URLRewrite地址重定向的实现
- VS2005 项目怎样添加“依赖”、“库目录”和“包含目录”
- usnews美国大学计算机科学排名,最新!2019年USNews美国大学计算机专业排名
- 索尼ILCE-7SM3覆盖恢复案例
- openlayers4 入门开发系列之风场图篇
- 汉诺塔python3函数编写和过程分析
热门文章
- express 项目生成器_用于项目的Express模板生成器(2)| 应用程序结构研究
- java方法重载和重载方法_我们可以在Java中重载main()方法吗?
- Google Guava,牛逼的脚手架
- jQuery.html()方法ie下不能设置html代码的问题
- C# 读取照片的EXIF信息
- python3、sqlmap下载与安装教程
- c语言既能读字母也能读数字,2014计算机二级考试C语言考前预测选择题
- java自定义标签遍历_自定义标签 - CarlDing的个人页面 - OSCHINA - 中文开源技术交流社区...
- idea序列化自动生成_serialVersionUID在数据序列化中重要性
- linux uefi无法启动文件,解决UEFI安装无法启动的问题