Android - 分转元、元转分 金额工具类
说明:
Android涉及到的金额分转元、元转分,写成工具类做记录使用。
需求:
1.元转分:
可传入字符串或者long型(隐式转换为long型也可)整数。
若传入为字符串,则通过替换小数点的方式转换,小数点有多位或者没有小数点皆已考虑。
若传入为long 则通过BigDecimal来乘100
2.分转元:
可传入字符串或者long型(隐式转换为long型也可)整数。并对传入的分进行粗略的格式判断
3.限制小数点两位
限制小数点后两位:1、EditText必须设置numberDecimal属性;2、再给EditText增加输入监听
代码:
package com.baofu.yunfutong.util;import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.Toast;import java.math.BigDecimal;/*** 金额工具类* Created by zst on 2018/5/7.*/public class AmountUtil {/*** 金额为分的格式*/public static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+";/*** 将分为单位的转换为元并返回金额格式的字符串 (除100)** @param amount* @return* @throws Exception*/public static String changeF2Y(Long amount) throws Exception {if (!amount.toString().matches(CURRENCY_FEN_REGEX)) {throw new Exception("金额格式有误");}int flag = 0;String amString = amount.toString();if (amString.charAt(0) == '-') {flag = 1;amString = amString.substring(1);}StringBuffer result = new StringBuffer();if (amString.length() == 1) {result.append("0.0").append(amString);} else if (amString.length() == 2) {result.append("0.").append(amString);} else {String intString = amString.substring(0, amString.length() - 2);for (int i = 1; i <= intString.length(); i++) {if ((i - 1) % 3 == 0 && i != 1) {result.append(",");}result.append(intString.substring(intString.length() - i, intString.length() - i + 1));}result.reverse().append(".").append(amString.substring(amString.length() - 2));}if (flag == 1) {return "-" + result.toString();} else {return result.toString();}}/*** 将分为单位的转换为元 (除100)** @param amount* @return* @throws Exception*/public static String changeF2Y(Context context, String amount) {if (!amount.matches(CURRENCY_FEN_REGEX)) {Toast.makeText(context, "金额格式有误", Toast.LENGTH_LONG).show();}return BigDecimal.valueOf(Long.valueOf(amount)).divide(new BigDecimal(100)).toString();}/*** 将元为单位的转换为分 (乘100)** @param amount* @return*/public static String changeY2F(Long amount) {return BigDecimal.valueOf(amount).multiply(new BigDecimal(100)).toString();}/*** 将元为单位的转换为分 替换小数点,支持以逗号区分的金额** @param amount* @return*/public static String changeY2F(String amount) {String currency = amount.replaceAll("\\$|\\¥|\\,", ""); //处理包含, ¥ 或者$的金额int index = currency.indexOf(".");int length = currency.length();Long amLong = 0l;if (index == -1) {amLong = Long.valueOf(currency + "00");} else if (length - index >= 3) {amLong = Long.valueOf((currency.substring(0, index + 3)).replace(".", ""));} else if (length - index == 2) {amLong = Long.valueOf((currency.substring(0, index + 2)).replace(".", "") + 0);} else {amLong = Long.valueOf((currency.substring(0, index + 1)).replace(".", "") + "00");}return amLong.toString();}/*** 限制小数点后两位** EditText属性改成如下:* numberDecimal表示只能输入一个小数点** <EditText* android:id="@+id/et_amt"* android:layout_width="wrap_content"* android:layout_height="wrap_content"* android:layout_marginLeft="20dp"* android:background="@null"* android:layout_weight="1"* android:layout_gravity="center_vertical"* android:textColorHint="@color/font_CCCCCC"* android:textColor="@color/font_333333"* android:textSize="14sp"* android:paddingTop="20dp"* android:paddingBottom="20dp"* android:inputType="number|numberDecimal"* android:hint="需小于或等于本期金额"/>**/public static void limitTwoDecimal(EditText editText) {editText.addTextChangedListener(new TextWatcher() {public void afterTextChanged(Editable edt) {String temp = edt.toString();int posDot = temp.indexOf(".");if (posDot <= 0) return;if (temp.length() - posDot - 1 > 2) {edt.delete(posDot + 3, posDot + 4);}}public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}});}
}
Android - 分转元、元转分 金额工具类相关推荐
- 【转】 Android快速开发系列 10个常用工具类 -- 不错
原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj6235 ...
- Android快速开发系列 10个常用工具类
目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基 ...
- android文件读取工具类,Android 下读取Assets Properties操作封装工具类
Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...
- Android快速开发不可或缺的11个工具类(下载)
Android快速开发不可或缺的11个工具类(下载) 源码简介 Android快速开发不可或缺的11个辅助类,其中10个来自张鸿洋的博客,1个是我平时积攒的,复制粘贴到你的项目里,添加上包名就可以直接 ...
- android 软键盘工具类,Android开发之弹出软键盘工具类简单示例
本文实例讲述了Android开发之弹出软键盘工具类.分享给大家供大家参考,具体如下: package com.maobang.imsdk.util; import android.content.Co ...
- android位置服务与GPS实时定位工具类
一.概述 据专家说:人类活动80%的信息与空间位置信息有关,这还真不是专家吹牛.举个例子:你跟女神约饭,你得知道女神在哪里吧?你们选择约在哪里的餐厅最合适?你们过去分别有多远?你们怎么过去?--总结起 ...
- Android Studio 插件开发详解二:工具类
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...
- Android开发之Dialog对话框(弹框)工具类
公司项目里面扣出来的 我们来看下弹框效果 直接上代码 ScreenSizeUtils.java package 导入自己的包;import android.content.Context; impor ...
- android网络请求线程池,利用线程池实现Android客户端的http网络数据请求工具类
该工具类值只实现了HTTP的get方法,参考get方法可轻松实现post.put.delete等方法,下面是get方法的实现 public class SimpleHttpClient { priva ...
最新文章
- adb devices只显示List of devices attached
- Auth模块、Forms组件
- 【数学基础】概率论——p(x|\theta)和p(x;\theta)的区别
- 通过jQuery源码学习javascript(三)
- AWS还是Firebase?在移动应用后端应该使用哪个?
- 人工智能的炒作_为什么人工智能被过度炒作?
- How-to: Build VPP FD.IO with Mellanox DPDK PMD on top CentOS 7.7 with inbox drivers.
- 干货!谷歌首席科学家发文阐述“半监督学习革命”,想走出瓶颈先试试这个...
- 树莓派蜜罐节点部署实战
- Ubuntu 16.04 LTS 安装Mongodb 3.4
- 构建入门Restful Web服务
- 服务器 '' 上的 MSDTC 不可用。
- VScode设置目录分级显示
- 数字版权管理 (DRM)
- GCF(3)---GCF简介
- layim手机版嵌入app
- mysql+纵表和横表_mysql 横表和纵表转换
- 川土微 数字隔离器 CA-IS3722HS可替代ADUM1201ARZ
- 《穷爸爸与富爸爸》语录之一
- 创世战车服务器维护,【创世战车】更新公告