这道题的答案网上不多,这种实现方法目前独一无二,若是转载或者复制,
请说明来自 渡客ITer博客http://blog.sina.com.cn/luolongfei120 谢谢
题目内容:
实现代码:
public class GNBExc {
public static void main(String[] args) {
Scanner sc = newScanner(System.in);
System.out.println("输入一件物品的价格(范围在0.10~5.00元:");
float n =Float.valueOf(sc.next());
float left = 0;
//1元
int oneyuanCount =(int)(n/1);
left =mysubtract(n,oneyuanCount*1.0f);
//五角
int wumaoCount =(int)(left/0.5);
left =mysubtract(left,wumaoCount*0.5f);
//两角
int liangmaoCount =(int)(left/0.2);
left =mysubtract(left,liangmaoCount*0.2f);
//一角
int onemaoCount =(int)(left/0.1);
left =mysubtract(left,onemaoCount*0.1f);
//五分
int wufenCount =(int)(left/0.05);
left =mysubtract(left,wufenCount*0.05f);
//两分
int liangfenCount =(int)(left/0.02);
left =mysubtract(left,liangfenCount*0.02f);
//一分
BigDecimal b = newBigDecimal(Float.toString(left/0.01f));
intonefenCount=(int)b.floatValue();
System.out.println("一元数量:"+oneyuanCount);
System.out.println("五角数量:"+wumaoCount);
System.out.println("两角数量:"+liangmaoCount);
System.out.println("一角数量:"+onemaoCount);
System.out.println("五分数量:"+wufenCount);
System.out.println("两分数量:"+liangfenCount);
System.out.println("一分数量:"+onefenCount);
}
//解决float型数据丢失精度问题
public static float mysubtract(float f1,floatf2){
BigDecimal b1 = newBigDecimal(Float.toString(f1));
BigDecimal b2 = newBigDecimal(Float.toString(Float.valueOf(f2)));
return b1.subtract(b2).floatValue();//b1-b2
}
}
有什么不明白的,请评论提问或者直接留言!!!!!