首页编程java编程java中金额用什么类型 decimal相当于java什么类型

java中金额用什么类型 decimal相当于java什么类型

编程之家2023-10-1396次浏览

大家好,感谢邀请,今天来为大家分享一下java中金额用什么类型的问题,以及和decimal相当于java什么类型的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

java中金额用什么类型 decimal相当于java什么类型

在java中,对一些敏感数据,用什么类型来存储更安全,为什么

系统里的数据类型是根据你的业务以及线程安全性能来选择的,比如金额适合使用bigdecimal类型,方便对金额的管理。对某个字段经常进行修改的使用StringBuffer类型,可以提升线程安全的等级,也可以减少服务器的负担。

关于数据的安全性,泛指系统之间的数据交互,比如我系统A向系统B发送客户的信息需要获取用户的详细资料,这时两边都需要对发送的数据进行加密,比如RSA SM加密等,也可以使用加密的传输协议HTTPS,这样数据不会被第三方查看,从而保持了数据安全性。

decimal相当于java什么类型

DecimalFormat是 NumberFormat的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数(123)、定点数(123.4)、科学记数法表示的数(1.23E4)、百分数(12%)和金额($123)。所有这些内容都可以本地化。

java中金额用什么类型 decimal相当于java什么类型

举个例子你定义了一个 int number= 123;

DecimalFormat abc=new DecimalFormat("0.00");

abc.format(number)的值就变成了123.00;了

java中金额用什么类型 decimal相当于java什么类型

格式化数字用的

java实现金额转换,阿拉伯数字的金额转换成中国传统的形式

直接通过以下接口类方法实现即可:

import java.math.BigDecimal;

/**

*金额工具类

*

*@author zn

*

*@Date 2013-2-1

*@Email zn.share@gmail.com

*/

public class MoneyUtil{

private static final int DFT_SCALE= 2;

/**大写数字*/

private static final String[] NUMBERS={"零","壹","贰","叁","肆","伍",

"陆","柒","捌","玖"};

/**整数部分的单位*/

private static final String[] IUNIT={"元","拾","佰","仟","万","拾","佰",

"仟","亿","拾","佰","仟","万","拾","佰","仟"};

/**小数部分的单位*/

private static final String[] DUNIT={"角","分","厘"};

/**

*得到大写金额。

*/

public static String toChinese(String str){

str= str.replaceAll(",","");//去掉","

String integerStr;//整数部分数字

String decimalStr;//小数部分数字

//初始化:分离整数部分和小数部分

if(str.indexOf(".")> 0){

integerStr= str.substring(0, str.indexOf("."));

decimalStr= str.substring(str.indexOf(".")+ 1);

} else if(str.indexOf(".")== 0){

integerStr="";

decimalStr= str.substring(1);

} else{

integerStr= str;

decimalStr="";

}

// integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去)

if(!integerStr.equals("")){

integerStr= Long.toString(Long.parseLong(integerStr));

if(integerStr.equals("0")){

integerStr="";

}

}

// overflow超出处理能力,直接返回

if(integerStr.length()> IUNIT.length){

System.out.println(str+":超出处理能力");

return str;

}

int[] integers= toArray(integerStr);//整数部分数字

boolean isMust5= isMust5(integerStr);//设置万单位

int[] decimals= toArray(decimalStr);//小数部分数字

return getChineseInteger(integers, isMust5)

+ getChineseDecimal(decimals);

}

/**

*整数部分和小数部分转换为数组,从高位至低位

*/

private static int[] toArray(String number){

int[] array= new int[number.length()];

for(int i= 0; i< number.length(); i++){

array[i]= Integer.parseInt(number.substring(i, i+ 1));

}

return array;

}

/**

*得到中文金额的整数部分。

*/

private static String getChineseInteger(int[] integers, boolean isMust5){

StringBuffer chineseInteger= new StringBuffer("");

int length= integers.length;

for(int i= 0; i< length; i++){

// 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元)

//特殊情况:10(拾元、壹拾元、壹拾万元、拾万元)

String key="";

if(integers[i]== 0){

if((length- i)== 13)//万(亿)(必填)

key= IUNIT[4];

else if((length- i)== 9)//亿(必填)

key= IUNIT[8];

else if((length- i)== 5&& isMust5)//万(不必填)

key= IUNIT[4];

else if((length- i)== 1)//元(必填)

key= IUNIT[0];

// 0遇非0时补零,不包含最后一位

if((length- i)> 1&& integers[i+ 1]!= 0)

key+= NUMBERS[0];

}

chineseInteger.append(integers[i]== 0? key

:(NUMBERS[integers[i]]+ IUNIT[length- i- 1]));

}

return chineseInteger.toString();

}

/**

*得到中文金额的小数部分。

*/

private static String getChineseDecimal(int[] decimals){

StringBuffer chineseDecimal= new StringBuffer("");

for(int i= 0; i< decimals.length; i++){

//舍去3位小数之后的

if(i== 3)

break;

chineseDecimal.append(decimals[i]== 0?""

:(NUMBERS[decimals[i]]+ DUNIT[i]));

}

return chineseDecimal.toString();

}

/**

*判断第5位数字的单位"万"是否应加。

*/

private static boolean isMust5(String integerStr){

int length= integerStr.length();

if(length> 4){

String subInteger="";

if(length> 8){// TODO 12-9-17

//取得从低位数,第5到第8位的字串

subInteger= integerStr.substring(length- 8, length- 4);

} else{

subInteger= integerStr.substring(0, length- 4);

}

return Integer.parseInt(subInteger)> 0;

} else{

return false;

}

}

/**

* BigDecimal相乘,四舍五入保留0位

*

*@param a

*@param b

*@return a*b

*/

public static BigDecimal mutiply(String a, String b, int roundingMode){

BigDecimal bd= new BigDecimal(a);

return bd.multiply(new BigDecimal(b)).setScale(DFT_SCALE, roundingMode);

}

/**

* BigDecimal相除,四舍五入保留两位

*

*@param a

*@param b

*@return a/b

*/

public static BigDecimal div(String a, String b, int roundingMode){

BigDecimal decimal1= new BigDecimal(a);

BigDecimal decimal2= new BigDecimal(b);

return decimal1.divide(decimal2, DFT_SCALE, roundingMode);

}

/**

* BigDecimal相加,四舍五入保留两位

*

*@param a

*@param b

*@return a+b

*/

public static BigDecimal sum(String a, String b, int roundingMode){

BigDecimal decimal1= new BigDecimal(a);

BigDecimal decimal2= new BigDecimal(b);

// DecimalFormat format= new DecimalFormat("#0.00");

return decimal1.add(decimal2).setScale(DFT_SCALE, roundingMode);

}

/**

* BigDecimal相减,四舍五入保留两位

*

*@param a

*@param b

*@return a+b

*/

public static BigDecimal sub(String a, String b, int roundingMode){

BigDecimal decimal1= new BigDecimal(a);

BigDecimal decimal2= new BigDecimal(b);

// DecimalFormat format= new DecimalFormat("#0.00");

return decimal1.subtract(decimal2).setScale(DFT_SCALE, roundingMode);

}

/**

* 100.00为10000

*

*@param a

*@return

*/

public static BigDecimal format(String a, int roundingMode){

return new BigDecimal(a).multiply(new BigDecimal(100)).setScale(0,

roundingMode);

}

public static void main(String[] args){

String number="54452";

System.out.println(number+""+ MoneyUtil.toChinese(number));

number="30200";

System.out.println(number+""+ MoneyUtil.toChinese(number));

number="30000.05";

System.out.println(number+""+ MoneyUtil.toChinese(number));

number="30000.00";

System.out.println(number+""+ MoneyUtil.toChinese(number));

}

}

备注:最后面的main方法是具体的调用。

好了,文章到这里就结束啦,如果本次分享的java中金额用什么类型和decimal相当于java什么类型问题对您有所帮助,还望关注下本站哦!

java cdn是什么意思?FLASH 到底是什么意思非诚勿扰黄澜 非诚勿扰黄澜老师今年多大了身高多少啊