说明:

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 - 分转元、元转分 金额工具类相关推荐

  1. 【转】 Android快速开发系列 10个常用工具类 -- 不错

    原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj6235 ...

  2. Android快速开发系列 10个常用工具类

    目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基 ...

  3. android文件读取工具类,Android 下读取Assets Properties操作封装工具类

    Android 下读取Assets Properties操作封装工具类 发布时间:2018-06-03作者:laosun阅读(2081) 为了方便使用,首先创建BaseApplication类,如下所 ...

  4. Android快速开发不可或缺的11个工具类(下载)

    Android快速开发不可或缺的11个工具类(下载) 源码简介 Android快速开发不可或缺的11个辅助类,其中10个来自张鸿洋的博客,1个是我平时积攒的,复制粘贴到你的项目里,添加上包名就可以直接 ...

  5. android 软键盘工具类,Android开发之弹出软键盘工具类简单示例

    本文实例讲述了Android开发之弹出软键盘工具类.分享给大家供大家参考,具体如下: package com.maobang.imsdk.util; import android.content.Co ...

  6. android位置服务与GPS实时定位工具类

    一.概述 据专家说:人类活动80%的信息与空间位置信息有关,这还真不是专家吹牛.举个例子:你跟女神约饭,你得知道女神在哪里吧?你们选择约在哪里的餐厅最合适?你们过去分别有多远?你们怎么过去?--总结起 ...

  7. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  8. Android开发之Dialog对话框(弹框)工具类

    公司项目里面扣出来的 我们来看下弹框效果 直接上代码 ScreenSizeUtils.java package 导入自己的包;import android.content.Context; impor ...

  9. android网络请求线程池,利用线程池实现Android客户端的http网络数据请求工具类

    该工具类值只实现了HTTP的get方法,参考get方法可轻松实现post.put.delete等方法,下面是get方法的实现 public class SimpleHttpClient { priva ...

最新文章

  1. adb devices只显示List of devices attached
  2. Auth模块、Forms组件
  3. 【数学基础】概率论——p(x|\theta)和p(x;\theta)的区别
  4. 通过jQuery源码学习javascript(三)
  5. AWS还是Firebase?在移动应用后端应该使用哪个?
  6. 人工智能的炒作_为什么人工智能被过度炒作?
  7. How-to: Build VPP FD.IO with Mellanox DPDK PMD on top CentOS 7.7 with inbox drivers.
  8. 干货!谷歌首席科学家发文阐述“半监督学习革命”,想走出瓶颈先试试这个...
  9. 树莓派蜜罐节点部署实战
  10. Ubuntu 16.04 LTS 安装Mongodb 3.4
  11. 构建入门Restful Web服务
  12. 服务器 '' 上的 MSDTC 不可用。
  13. VScode设置目录分级显示
  14. 数字版权管理 (DRM)
  15. GCF(3)---GCF简介
  16. layim手机版嵌入app
  17. mysql+纵表和横表_mysql 横表和纵表转换
  18. 川土微 数字隔离器 CA-IS3722HS可替代ADUM1201ARZ
  19. 《穷爸爸与富爸爸》语录之一
  20. 创世战车服务器维护,【创世战车】更新公告

热门文章

  1. 海为PLC远程监控与数据采集方案
  2. 北京搬家货运公司汇总
  3. 制作PPT时怎样快捷修改默认字体?
  4. 负片与水印效果(OpenCV)
  5. mysql查询数量语句_mysql语句统计总数_一条sql语句实现统计查询_MySQL
  6. Jmeter请求参数MD5加密
  7. 分享使用全自动引流脚本之前须知的五大要点
  8. 7-5 计算2个复数之和与之积
  9. Meth | git 常用命令
  10. MATLAB微分和导数