这道题的答案网上不多,这种实现方法目前独一无二,若是转载或者复制,
请说明来自 渡客ITer博客http://blog.sina.com.cn/luolongfei120 谢谢
题目内容:
实现代码:
public class GNBExc {
public static void main(String[] args) {
Scanner sc = new Scanner(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 = new BigDecimal(Float.toString(left/0.01f));
int onefenCount=(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,float f2){
BigDecimal b1 = new BigDecimal(Float.toString(f1));
BigDecimal b2 = new BigDecimal(Float.toString(Float.valueOf(f2)));
return b1.subtract(b2).floatValue();//b1-b2
}
}
有什么不明白的,请评论提问或者直接留言!!!!!