回答: 一般使用 java.math.BigDecimal ?類(lèi)來(lái)處理需要高精度的計(jì)算
創(chuàng)新互聯(lián)建站專(zhuān)注于江夏企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),成都商城網(wǎng)站開(kāi)發(fā)。江夏網(wǎng)站建設(shè)公司,為江夏等地區(qū)提供建站服務(wù)。全流程按需定制開(kāi)發(fā),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
原因: 1.浮點(diǎn)數(shù)(double,flot)因?yàn)榫葐?wèn)題, 容易出現(xiàn)不精確的計(jì)算結(jié)果
2.浮點(diǎn)數(shù)范圍比較小
BigDecimal ?范圍大, 并且比他們精確
參考代碼
import?java.math.BigDecimal;
public?class?Demo?{
public?static?void?main(String[]?args)?{
//浮點(diǎn)數(shù),存在精度問(wèn)題
double?d1?=?0.19*6;
System.out.println(d1);//1.1400000000000001
//采用BigDecimal?來(lái)解決精度問(wèn)題
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
/**
金額轉(zhuǎn)換,阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國(guó)傳統(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("請(qǐng)輸入您的金額¥:");
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("您輸入的金額有誤!請(qǐng)重新輸入");
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]+"萬(wàn)"+ch[i+1]+"千"+ch[i+2]+"百"
+ch[i+3]+"十"+ch[i+4]+"元整"); break;}
case 6: {System.out.println(ch[i]+"十"+ch[i+1]+"萬(wàn)"+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]+"萬(wàn)"
+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]+"萬(wàn)"+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]+"萬(wàn)"+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]+"萬(wàn)"+ch[i+6]+"千"+ch[i+7]+"百"+ch[i+8]+"十"
+ch[i+9]+"元整"); break;}
default: System.out.println("錯(cuò)誤");
}
}
}
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是剩余的錢(qián),剛開(kāi)始為所求的錢(qián),隨便選錢(qián)rest越變?cè)叫。钡綖?
int rest = money;
for (int rmb : rmbs) {
// num為鈔票個(gè)數(shù)
int num = rest / rmb;
if (num 0) {
rest = rest - rmb * num;
System.out.println("鈔票面額(分):" + rmb + " 個(gè)數(shù):" + num + " 還差多少錢(qián)(分):" + rest);
// 錢(qián)湊齊了,程序結(jié)束
if (rest == 0) {
System.exit(1);
}
} // end if num
} // end for rmb
}
}
public static void main(String[] args) {
double amount = 1200;// 消費(fèi)金額
boolean isTeacherOrOld = true; // 是否有教師資格證或者老人標(biāo)識(shí)
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("消費(fèi)金額:" + calcAmount.multiply(discountNineFive).toString());
} else {
System.out.println("消費(fèi)金額:" + calcAmount.toString());
}
}
網(wǎng)站標(biāo)題:java代碼中金額比較 java中金額用什么類(lèi)型
轉(zhuǎn)載來(lái)源:http://www.chinadenli.net/article20/dohjojo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、軟件開(kāi)發(fā)、App設(shè)計(jì)、網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容