java代碼中金額比較 java中金額用什么類型

java開發(fā)中,一般涉及到金錢計算的時候用什么數(shù)據(jù)類型

回答: 一般使用 java.math.BigDecimal ?類來處理需要高精度的計算

創(chuàng)新互聯(lián)建站專注于江夏企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),成都商城網(wǎng)站開發(fā)。江夏網(wǎng)站建設(shè)公司,為江夏等地區(qū)提供建站服務(wù)。全流程按需定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

原因: 1.浮點數(shù)(double,flot)因為精度問題, 容易出現(xiàn)不精確的計算結(jié)果

2.浮點數(shù)范圍比較小

BigDecimal ?范圍大, 并且比他們精確

參考代碼

import?java.math.BigDecimal;

public?class?Demo?{

public?static?void?main(String[]?args)?{

//浮點數(shù),存在精度問題

double?d1?=?0.19*6;

System.out.println(d1);//1.1400000000000001

//采用BigDecimal?來解決精度問題

BigDecimal?bd1?=?new?BigDecimal("0.19");

BigDecimal?bd2?=?new?BigDecimal("6");

BigDecimal?bd3?=?bd1.multiply(bd2);

System.out.println(bd3);//1.14

}

}

輸出

1.1400000000000001

1.14

JAVA編程 金額轉(zhuǎn)換

/**

金額轉(zhuǎn)換,阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國傳統(tǒng)的形式如:

(¥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("錯誤");

}

}

}

設(shè)有各不同面值人民幣若干,編寫一個java程序,對任意輸入的一個金額,給出能組合出這個值的最佳可能

public class Money {

public static void main(String[] args) {

// 所有金額以分為單位

int money = 146;

// 所有鈔票面以分為單位,從大到小排列,10000是100塊,20是2角

int[] rmbs = { 10000, 5000, 2000, 1000, 500, 100, 50, 20, 10, 5, 2, 1 };

// rest是剩余的錢,剛開始為所求的錢,隨便選錢rest越變越小,直到為0

int rest = money;

for (int rmb : rmbs) {

// num為鈔票個數(shù)

int num = rest / rmb;

if (num 0) {

rest = rest - rmb * num;

System.out.println("鈔票面額(分):" + rmb + " 個數(shù):" + num + " 還差多少錢(分):" + rest);

// 錢湊齊了,程序結(jié)束

if (rest == 0) {

System.exit(1);

}

} // end if num

} // end for rmb

}

}

Java編寫程序計算打折后金額

public static void main(String[] args) {

double amount = 1200;// 消費金額

boolean isTeacherOrOld = true; // 是否有教師資格證或者老人標(biāo)識

BigDecimal discountEightFive = new BigDecimal("0.85");// 85折

BigDecimal discountNine = new BigDecimal("0.9");// 95折

BigDecimal discountNineFive = new BigDecimal("0.95");// 95折

BigDecimal bdAmount = new BigDecimal(Double.toString(amount));

BigDecimal calcAmount = new BigDecimal("0.00");

if (amount = 2000) {

calcAmount = bdAmount.multiply(discountEightFive);

} else if (amount 1000 amount 2000) {

calcAmount = bdAmount.multiply(discountNine);

} else {

calcAmount = new BigDecimal(Double.toString(amount));

}

if (isTeacherOrOld amount = 1000) {

System.out.println("消費金額:" + calcAmount.multiply(discountNineFive).toString());

} else {

System.out.println("消費金額:" + calcAmount.toString());

}

}

網(wǎng)站標(biāo)題:java代碼中金額比較 java中金額用什么類型
轉(zhuǎn)載來源:http://bm7419.com/article20/dohjojo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站軟件開發(fā)、App設(shè)計、網(wǎng)站改版外貿(mào)網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司