一道java习题

这道题的答案网上不多,这种实现方法目前独一无二,若是转载或者复制,

请说明来自 渡客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
 }
}

 

有什么不明白的,请评论提问或者直接留言!!!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值