金额的转换与integer /String的转换

private static Logger logger = Logger.getLogger(DateUtils.class);
public final static BigDecimal SYS_MULTIPLE = new BigDecimal(100);
public final static BigDecimal RATE_MULTIPLE = new BigDecimal(10000);

/**
* 字串轉BotCashier系統數值
* @param amtStr*100
* @return
*/
public static int strToSysInt(String amtStr){
if (amtStr == null) return 0;
try{
amtStr=amtStr.replace(",", "");
BigDecimal amount = new BigDecimal(amtStr);
return amount.multiply(SYS_MULTIPLE).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
}catch (Exception e){
logger.error("[AmtUtils convert amt string error]", e);
return 0;
}
}

/**
* BotCashier系統數字值轉成字串
* @param amt
* @return
*/
public static Integer sysIntToStr(Integer amt){
if (amt == null) return 0;
try{
//BigDecimal amount = new BigDecimal(amt);
//return amount.divide(SYS_MULTIPLE, 0, BigDecimal.ROUND_HALF_UP);
return amt/100;
}catch (Exception e){
logger.error("[AmtUtils convert amt error]", e);
return 0;
}
}

/**
* 系統數值字串轉數值
* @param amtStr/100
* @return
*/
public static int SysStrToInt(String amtStr){
if (amtStr == null) return 0;
try{
BigDecimal amount = new BigDecimal(amtStr);
return amount.divide(SYS_MULTIPLE, 2, BigDecimal.ROUND_HALF_UP).intValue();
}catch (Exception e){
logger.error("[AmtUtils convert amt string error]", e);
return 0;
}
}
//——————————————————————————————————Hellian Added 格式化金額 2014.7.15—————————————————————————————————
/**
* 將字符串金額格式化
* @param amtStr
* @return
*/
public static String amtStrFomat(String amtStr){
if (amtStr == null || amtStr.equals("null")) return "0";
try{
DecimalFormat dFormat=new DecimalFormat("###,##0.00");
return dFormat.format(Integer.parseInt(amtStr));
}catch (Exception e){
logger.error("[AmtUtils convert amt string error]", e);
return "0";
}
}
/**
* 將整型金額格式化
* @param amt
* @return
*/
public static String amtFomat(Integer amt){
if (amt == null) return "0";
try{
DecimalFormat dFormat=new DecimalFormat("###,##0.00");
return dFormat.format(amt);
}catch (Exception e){
logger.error("[AmtUtils convert amt string error]", e);
return "0";
}
}
//————————————————————————————————————————————————————————————————————————————————————————————————————
/**
* 計算信用卡手續費 產生實際字串
* @param amt 交易金額(為系統數字)
* @param cardRate 費率(為系統數字)
* ex: amt=10000(實際金額為100), rate=200(實際費率為0.02)
* @return
*/
public static Integer calculateCardFeeStr(Integer amt, Integer cardRate){
try{
return sysIntToStr(calculateCardFee(amt, cardRate));
}catch (Exception e){
logger.error("[AmtUtils calculate amt error]", e);
return 0;
}
}

/**
* 計算信用卡手續費 產生系統數字
* @param amt 交易金額(為系統數字)
* @param cardRate 費率(為系統數字)
* ex: amt=10000(實際金額為100), rate=200(實際費率為0.02)
* @return
*/
public static int calculateCardFee(Integer amt, Integer cardRate){
try{
BigDecimal amount = new BigDecimal(amt);
BigDecimal rate = new BigDecimal(cardRate).divide(RATE_MULTIPLE);
return amount.multiply(rate).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
}catch (Exception e){
logger.error("[AmtUtils calculate amt error]", e);
return 0;
}
}

public static void main(String[] args) {
System.out.println(calculateCardFee(10000, strToSysInt("2.5")));
System.out.println(calculateCardFeeStr(10000, strToSysInt("2.5")));

}

时间: 2024-11-10 16:13:59

金额的转换与integer /String的转换的相关文章

记一次踩坑 Gson转换map对象时 Integer类型自动转换成Double类型

之前一直使用json转换map对象,因为公司统一使用gson,我按照网上转换map对象的方式转换: Map<String, Object> params = gson.fromJson(gson.toJson(payMentResultDto), Map.class); 结果对象里Integer类型自动变成double类型... 解决办法: 网上大致有俩种,1.修改源码(能力达不到)2.增加适配器 我找了一下,解决办法有俩种(比较实用) 1.网上看到的(自定义类型适配器),亲测可用 //这俩段

C++中Cstring、wstring 和string互相转换总结

通过前一篇文章<C++中string,wstring,CString的基本概念和用法>,对Cstring.wstring 和string有了一个了解.string是C++提供的标准字符串操作类.wstring是操作宽字符串的类..CString是对string(字符串)和wstring(宽字符串)的一个封装,常用在mfc中,用来解决编码问题的.在编程过程中,经常会遇到Cstring.wstring 和string之间的相互转换,在这里做了个简单地总结,另外也会附上其他类型的转换.常见的转换方式

char*,const char*和string 三者转换

1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua". string s = tmp; (2) string转换为const char*,利用c_str() EX:  string s = "tsinghua"; const char*tmp = s.c_str(); 2. char*和const char*之间的转换 (1) cons

C++中将string类型变量转换成int型变量

需要的头文件:#include<sstream> 操作: string s1="124": int x; stringstream ss; ss<<s1; ss>>x; C++中将string类型变量转换成int型变量,布布扣,bubuko.com

unicode string和ansi string的转换函数及获取程序运行路径的代码

#pragma once#include <string> namespace stds { class tool { public: std::string ws2s(const std::wstring& ws) { std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C"; setlocale(LC_ALL, "chs"); const wchar_t* _Sou

实战c++中的string系列--CDuiString和string的转换(duilib中的cduistring)

使用所duilib的人定会知道cduistring类型,先看看这个类是怎么定义的: class UILIB_API CDuiString { public: enum { MAX_LOCAL_STRING_LEN = 127/*63*/ }; CDuiString(); CDuiString(const TCHAR ch); CDuiString(const CDuiString& src); CDuiString(LPCTSTR lpsz, int nLen = -1); ~CDuiStrin

c#中从string数组转换到int数组

以前一直有一个数组之间转换的东西,可是忘记了,今天也是找了好久也没有解决,最后用这种方法解决了,分享给大家. string[] input = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; int[] output = Array.ConvertAll<string, i

java面试题,将String字符串转换成数字

题目要求:将String字符串转换成数字,不能用java自带的方法转换字符串,要求自己写一个atoi(String s),如果输入的不是数字则返回0. import java.util.Scanner; /** * Created by Dell on 2014/7/14. * * 面试题 * 将字符串转换成数字,不用java自带的方法 */ public class MianShi_01 { public static void main(String[] args) { Scanner in

HTML5 Blob与ArrayBuffer、TypeArray和字符串String之间转换

1.将String字符串转换成Blob对象 //将字符串 转换成 Blob 对象 var blob = new Blob(["Hello World!"], { type: 'text/plain' }); console.info(blob); console.info(blob.slice(1, 3, 'text/plain')); 2.将TypeArray  转换成 Blob 对象 //将 TypeArray 转换成 Blob 对象 var array = new Uint16A