回答: 一般使用 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
/**
金額轉(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("錯誤");
}
}
}
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
}
}
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)