「java金额」java金额加逗号

博主:adminadmin 2022-12-07 20:33:11 75

今天给各位分享java金额的知识,其中也会对java金额加逗号进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用java财务软件中最后的总金额是怎么算的

public static void main(String args[]) {

System.out.println("********************");

System.out.println("");

System.out.println("请选择购买的商品编号:");

System.out.println("1.T恤(¥245.0) 网球鞋(¥570.0) 网球拍(¥500.0)");

System.out.println("********************");

System.out.println("");

double s = 0;

String d;

do {

System.out.print("请输入商品编号:");

Scanner input = new Scanner(System.in);

int a = input.nextInt();

if (a == 1) {

System.out.print("请输入购买数量:");

int b = input.nextInt();

double c = 245 * b;

System.out.println("T恤¥245.0 数量:" + b + " " + "合计:" + c);

s = s + c;

} else if (a == 2) {

System.out.print("请输入购买数量:");

int b = input.nextInt();

double c = 570 * b;

System.out.println("网球鞋¥245.0 数量:" + b + " " + "合计:" + c);

s = s + c;

} else if (a == 3) {

System.out.print("请输入购买数量:");

int b = input.nextInt();

double c = 500 * b;

System.out.println("网球拍¥245.0 数量:" + b + " " + "合计:" + c);

s = s + c;

} else {

System.out.println("无此商品");

}

System.out.print("是否继续(y/n)");

d = input.next();

System.out.println();

} while (d.equals("y"));

double m = s * 0.8;

System.out.println(":0.8");

System.out.println("应付金额:" + m);

System.out.print("实际金额:");

Scanner input = new Scanner(System.in);

int x = input.nextInt();

System.out.println();

double p = x - m;

System.out.println("找钱:" + p);

}

这样显示就和截图一样了

JAVA编程 金额转换

/**

金额转换,阿拉伯数字的金额转换成中国传统的形式如:

(¥1011)-(一千零一拾一元 整)输出。

*/

import java.io.*;

import java.lang.String;

public class Money{

public static void main(String[] args)throws Exception{

String str=null;

System.out.println("请输入您的金额¥:");

flag:

while(true){

try{BufferedReader in=

new BufferedReader(new InputStreamReader(System.in));

str=in.readLine();

}catch(IOException e){}

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

if(str.charAt(i)57||str.charAt(i)48){

System.out.println("您输入的金额有误!请重新输入");

continue flag;

}

}

break;

}

char[] ch=str.toCharArray();

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

switch(ch[i]){

case '0':{ ch[i]='零'; break;}

case '1':{ ch[i]='壹'; break;}

case '2':{ ch[i]='贰'; break;}

case '3':{ ch[i]='叁'; break;}

case '4':{ ch[i]='肆'; break;}

case '5':{ ch[i]='伍'; break;}

case '6':{ ch[i]='陆'; break;}

case '7':{ ch[i]='柒'; break;}

case '8':{ ch[i]='捌'; break;}

case '9':{ ch[i]='玖'; break;}

default: ch[i]='f';

}

}

int i=0;

switch(ch.length){

case 0:

case 1: {System.out.println(ch[i]+"元整");}

case 2: {System.out.println(ch[i]+"十"+ch[i+1]+"元整");}

case 3: {System.out.println(ch[i]+"百"+ch[i+1]+"十"+ch[i+2]+"元整");}

case 4: {System.out.println(ch[i]+"千"+ch[i+1]+"百"+ch[i+2]+"十"

+ch[i+3]+"元整"); break;}

case 5: {System.out.println(ch[i]+"万"+ch[i+1]+"千"+ch[i+2]+"百"

+ch[i+3]+"十"+ch[i+4]+"元整"); break;}

case 6: {System.out.println(ch[i]+"十"+ch[i+1]+"万"+ch[i+2]+"千"

+ch[i+3]+"百"+ch[i+4]+"十"+ch[i+5]+"元整"); break;}

case 7: {System.out.println(ch[i]+"百"+ch[i+1]+"十"+ch[i+2]+"万"

+ch[i+3]+"千"+ch[i+4]+"百"+ch[i+5]+"十"+ch[i+6]+"元整"); break;}

case 8: {System.out.println(ch[i]+"千"+ch[i+1]+"百"+ch[i+2]+"十"

+ch[i+3]+"万"+ch[i+4]+"千"+ch[i+5]+"百"+ch[i+6]+"十"+ch[i+7]+"元整"); break;}

case 9: {System.out.println(ch[i]+"亿"+ch[i+1]+"千"+ch[i+2]+"百"

+ch[i+3]+"十"+ch[i+4]+"万"+ch[i+5]+"千"+ch[i+6]+"百"+ch[i+7]+"十"

+ch[i+8]+"元整"); break;}

case 10: {System.out.println(ch[i]+"十"+ch[i+1]+"亿"+ch[i+2]+"千"

+ch[i+3]+"百"+ch[i+4]+"十"+ch[i+5]+"万"+ch[i+6]+"千"+ch[i+7]+"百"+ch[i+8]+"十"

+ch[i+9]+"元整"); break;}

default: System.out.println("错误");

}

}

}

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金额转换的问题,想要保留小数点后两位,这样会下标越界该怎么改?

哈?你的程序好复杂,我都没看明白

BigDecimal直接设置小数并设置四舍五入的方式不就好了吗?

public static void main(String[] args) {

BigDecimal b0 = new BigDecimal("123");

BigDecimal b1 = new BigDecimal("1234");

BigDecimal b2 = new BigDecimal("12345");

BigDecimal b3 = new BigDecimal("123456");

BigDecimal b4 = new BigDecimal("1234567");

BigDecimal b5 = new BigDecimal("12345678");

BigDecimal b6 = new BigDecimal("123.45678");

BigDecimal b7 = new BigDecimal("123.45678");

System.out.println(b0.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));

System.out.println(b1.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));

System.out.println(b2.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP));

System.out.println(b3.divide(new BigDecimal(10000), 2, RoundingMode.DOWN));

System.out.println(b4.divide(new BigDecimal(10000), 3, RoundingMode.HALF_UP));

System.out.println(b5.divide(new BigDecimal(100000), 3, RoundingMode.DOWN));

System.out.println(b6.setScale(2, RoundingMode.HALF_UP));

System.out.println(b7.setScale(2, RoundingMode.DOWN));

}

其中,setScale即设置小数位数是多少,RoundingMode表示四舍五入的方式,常用的就是HALF_UP表示四舍五入,DOWN表示直接舍掉,还有些其他的你查一下RoundingMode就行。

运行结果:

Java中如何存储金额的问题

方法一:(传入的是BigDecimal,数据库保存为DECIMAL)

方法二:(传入的是BigDecimal,数据库保存为BigInt)

用java编译金额的中文大写转换。

/**

* 金额小数转换成中文大写金额

* @author Neil Han

*

*/

public class ConvertMoneyToUppercase {

private static final String UNIT[] = { "万", "千", "佰", "拾", "亿", "千", "佰",

"拾", "万", "千", "佰", "拾", "元", "角", "分" };

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

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

private static final double MAX_VALUE = 9999999999999.99D;

/**

* 将金额小数转换成中文大写金额

* @param money

* @return result

*/

public static String convertMoney(double money) {

if (money 0 || money MAX_VALUE)

return "参数非法!";

long money1 = Math.round(money * 100); // 四舍五入到分

if (money1 == 0)

return "零元整";

String strMoney = String.valueOf(money1);

int numIndex = 0; // numIndex用于选择金额数值

int unitIndex = UNIT.length - strMoney.length(); // unitIndex用于选择金额单位

boolean isZero = false; // 用于判断当前为是否为零

String result = "";

for (; numIndex strMoney.length(); numIndex++, unitIndex++) {

char num = strMoney.charAt(numIndex);

if (num == '0') {

isZero = true;

if (UNIT[unitIndex] == "亿" || UNIT[unitIndex] == "万"

|| UNIT[unitIndex] == "元") { // 如果当前位是亿、万、元,且数值为零

result = result + UNIT[unitIndex]; //补单位亿、万、元

isZero = false;

}

}else {

if (isZero) {

result = result + "零";

isZero = false;

}

result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];

}

}

//不是角分结尾就加"整"字

if (!result.endsWith("角")!result.endsWith("分")) {

result = result + "整";

}

//例如没有这行代码,数值"400000001101.2",输出就是"肆千亿万壹千壹佰零壹元贰角"

result = result.replaceAll("亿万", "亿");

return result;

}

public static void main(String[] args) {

double value = Double.parseDouble("40330701101.2");

System.out.println("您输入的金额(小写)为:" + value);

System.out.println("您输入的金额(大写)为:" + convertMoney(value));

}

}

关于java金额和java金额加逗号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-07,除非注明,否则均为首码项目网原创文章,转载请注明出处。