JavaSE 案例练习——精算师 double精度丢失解决思路

本文通过一个精算师案例探讨了Java中double类型精度丢失问题,并提出了两种解决方案:将小数转换为整数进行计算,以及使用BigDecimal进行精确计算。详细分析了BigDecimal在处理精度问题时的注意事项,包括避免使用double初始化。
摘要由CSDN通过智能技术生成

案例介绍

具体的内容是这样的

编写一个程序,提示输入一个代表总钱数的双精度值,然后确定每种纸币和硬币需要的最少数量以达到输入的总钱数。

假设人民币种类如下:佰圆纸钞,伍拾圆纸钞,贰拾圆纸钞,拾圆纸钞,伍圆纸钞,壹圆硬币,伍角硬币,壹角硬币,壹分硬币。(提示:使用求模运算符,自上而下求得每种钱币的数量)。

例如,输入值为127.63元人民币,那么程序应当输出如下结果:

  • 1张佰圆纸钞;

  • 0张伍拾圆纸钞;

  • 1张贰拾圆纸钞;

  • 0张拾圆纸钞;

  • 1张伍圆纸钞;

  • 2个壹圆硬币;

  • 1个伍角硬币;

  • 1个壹角硬币;

  • 3个壹分硬币。

解题

思考

这题还是有思路的:

题干中说到:确定每种纸币和硬币需要的最少数量以达到输入的总钱数。

可以理解为:

  • 尽量用最大数值的钱币去找零钱
  • 那么我们应该从最大的钱币 开始 去扣掉这个数值
  • 程序的顺序 从最大的钱币 到最小的钱币,直到找完

操作

因此,可以编写如下的代码:


import java.util.Scanner;

publ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值