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

創(chuàng)新互聯建站專注于江夏企業(yè)網站建設,響應式網站開發(fā),成都商城網站開發(fā)。江夏網站建設公司,為江夏等地區(qū)提供建站服務。全流程按需定制開發(fā),專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯建站專業(yè)和態(tài)度為您提供的服務
原因: 1.浮點數(double,flot)因為精度問題, 容易出現不精確的計算結果
2.浮點數范圍比較小
BigDecimal ?范圍大, 并且比他們精確
參考代碼
import?java.math.BigDecimal;
public?class?Demo?{
public?static?void?main(String[]?args)?{
//浮點數,存在精度問題
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
/**
金額轉換,阿拉伯數字的金額轉換成中國傳統的形式如:
(¥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為鈔票個數
int num = rest / rmb;
if (num 0) {
rest = rest - rmb * num;
System.out.println("鈔票面額(分):" + rmb + " 個數:" + num + " 還差多少錢(分):" + rest);
// 錢湊齊了,程序結束
if (rest == 0) {
System.exit(1);
}
} // end if num
} // end for rmb
}
}
public static void main(String[] args) {
double amount = 1200;// 消費金額
boolean isTeacherOrOld = true; // 是否有教師資格證或者老人標識
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());
}
}
網站標題:java代碼中金額比較 java中金額用什么類型
轉載來源:http://chinadenli.net/article20/dohjojo.html
成都網站建設公司_創(chuàng)新互聯,為您提供定制網站、軟件開發(fā)、App設計、網站改版、外貿網站建設、移動網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯