Java *2.22(财务应用:货币单位)改写程序清单2-10,解决将double转int可能会造成精度损失问题。以整数值作为输入,其最后两位代表的是美分币值。例如:1156就表示11美元56美分。
2-10 示例学习:整钱总零
要点提示:本节展示一个程序,将一个大额的钱分成较小货币单位。
假如你希望开发一个程序,将给定的钱数分成较小的货币单位。这个程序要求客户输入一个double型的值,该值是用美元和美分表示的总钱数,然后输出一个清单,列出和总钱数等价的最大数量的dollar(美分)、quarter(2角5分)、dime(1角)、nickel(5分)和penny(1分)的数目,按照这个顺序,从而使得硬币最少。
下面是开发这个程序的步骤:
1)提示用户输入十进制作为总钱数,例如11.56。
2) 将该钱数(例如11.56)转换为1分币的个数(例如1156)。
3)通过将1分币的个数除以100,求出1美分的个数。通过对剩余的1分币的个数除以100求余数,得到剩余1分币的个数。
4) 通过将剩余1分币的个数除以25,求出2角5分的个数。通过对剩余的1分币的个数除以25求余数,得到剩余1分币的个数。
5) 通过将1分币的个数除以10,求出1角的个数。通过对剩余的1分币的个数除以10求余数,得到剩余1分币的个数。
6) 通过将1分币的个数除以5,求出5分币的个数。通过对剩余的1分币的个数除以5求余数,得到剩余1分币的个数。
7) 剩余1分币的个数即为所求。
8) 显示结果。
完整的程序如程序清单2-10所示:
程序清单2 - 10 ComputeChange.java
package Second;import java.util.Scanner;public class Code10 {public static void main(String[] args) {//Creat aScannerScanner input = new Scanner(System.in);//Receive the amountSystem.out.println("Enter the amount in double, for example 11.56:");double amount = input.nextDouble();int remainingAmount = (int)(amount * 100);//Find the number of one dollarsint numberOfOneDollars = remainingAmount / 100;remainingAmount = remainingAmount % 100;//Find the number of quarters in the remaining amountint numberOfQuarters = remainingAmount / 25;remainingAmount = remainingAmount % 25;//Find the number of quarters in the remaining amountint numberOfDimes = remainingAmount / 10;remainingAmount = remainingAmount % 10;//Find the number of quarters in the remaining amountint numberOfNickels = remainingAmount / 5;remainingAmount = remainingAmount % 5;// Find the number of pennies in the remaining amountint numberOfPennies = remainingAmount;//Display resultSystem.out.println("Your amount " + amount + " consists of");System.out.println(" " + numberOfOneDollars + "double");System.out.println(" " + numberOfQuarters + "quarters");System.out.println(" " + numberOfDimes + "dimes");System.out.println(" " + numberOfNickels + "nickels");System.out.println(" " + numberOfPennies +"pennies");}}
输出
Enter the amount in double, for example 11.56: 11.56 Your amount 11.56 consists of11double2quarters0dimes1nickels1pennies
程序2-22
package Second;import java.util.Scanner;public class Code_22 {public static void main(String[] args) {//Creat aScannerScanner input = new Scanner(System.in);//Receive the amountSystem.out.println("Enter the amount in double, for example 1156:");int amount = input.nextInt();int remainingAmount = (int)(amount * 100);//Find the number of one dollarsint numberOfOneDollars = remainingAmount / 10000;remainingAmount = remainingAmount % 10000;//Find the number of quarters in the remaining amountint numberOfQuarters = remainingAmount / 100;remainingAmount = remainingAmount % 100;//Display resultSystem.out.println("Your amount " + amount + " consists of");System.out.println(" " + numberOfOneDollars + "double");System.out.println(" " + numberOfQuarters + "quarters");}}
输出
Enter the amount in double, for example 1156: 1156 Your amount 1156 consists of11double56quarters
Java *2.22(财务应用:货币单位)改写程序清单2-10,解决将double转int可能会造成精度损失问题。以整数值作为输入,其最后两位代表的是美分币值。例如:1156就表示11美元56美分。相关推荐
- Java黑皮书课后题第2章:*2.22(金融应用:货币单位)改写程序清单2-10,解决将double转int可能会造成精度损失问题。以整数值作为输入,其最后两位代表的是美分币值
*2.22(金融应用:货币单位)改写程序清单2-10,解决将double转int可能会造成精度损失问题.以整数值作为输入,其最后两位代表的是美分币值 题目 题目概述 举例 程序清单2-10 修改思路 ...
- Java黑皮书课后题第4章:*4.26(金融应用:货币单位)重写程序清单2-10,解决将float型值转换为int型值时可能会造成精度损失的问题。读取的输入值是一个字符串,比如“11.56“
*4.26(金融应用:货币单位)重写程序清单2-10,解决将float型值转换为int型值时可能会造成精度损失的问题.读取的输入值是一个字符串,比如"11.56" 题目 题目概述 ...
- Java黑皮书课后题第4章:*4.10(猜测生日)改写程序清单4-3,提示用户输入字符Y代表“是”N代表“否”,代替之前输入1表示“是”,0表示“否
*4.10(猜测生日)改写程序清单4-3,提示用户输入字符Y代表"是"N代表"否",代替之前输入1表示"是",0表示"否 题目 题 ...
- Java int转float 精度损失
int n = 123456789; float f =n; 打印f,发现f=1.23456792E8,发生了精度损失. 我起初的疑问,float取值范围比int取值范围大,为什么会出现精度损失那? ...
- Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间
7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字.估算调用程序清单7-6中的linearSearch方法的执行时间 题目 题目描述 程序清单7-6的linearSe ...
- Java黑皮书课后题第7章:*7.6(修改程序清单5-15)程序清单5-15通过检验2、3、4…n/2是否是数n的因子来判断n是否为素数。判断n是否素数的更高效的方法是检验小于等于根n的素数是否有n整
*7.6(修改程序清单5-15)程序清单5-15通过检验2.3.4-n/2是否是数n的因子来判断n是否为素数.判断n是否素数的更高效的方法改写5-15 题目 题目描述 破题 程序清单5-15(非本题代 ...
- java 校验姓名只能包含中英文_java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数...
package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...
- Java注解方法实现BigDecimal保留两位小数(案例详解)
[辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...
- java保留小数点后面两位(四舍五入)
java保留小数点后面两位(四舍五入)学习记录 三个方法: 1.使用String.format("%.2f",num); //num是要处理的数据 这种方法可以用float ...
最新文章
- 2016年全球芯片市场或衰退2.13%
- Python 之字典常用方法
- DCMTK:DSRTree和DSRTreeNodeCursor类的测试程序
- HarmonyOS之常用组件Button的功能和使用
- JavaScript jQuery获取radio/下拉框的选中值
- 为什么学好计算机就必须学好汇编?
- 云效Codeup代码评审中的代码协同
- Flex DataGrid 筛选实现
- Vue默认插槽、具名插槽、作用域插槽及使用作用域插槽删除列表项
- vs2005用正则表达式统计有效代码行数
- ubuntu16.04下安装wine及TIM
- 金属芯PCB中的贵族,热电分离铜基板(高导热380W)
- 计算机知识练习中公,计算机考试题库:计算机基础练习题(14)
- python实现BMI计算器
- LOTO 示波器软件功能——文件存储和回读功能
- 无人驾驶引发的变革比想象的更快,留给车企和老司机的时间已不多
- ec,easyclick常用函数大全,集合1
- 计算机在盲童音乐教学中的具体应用,盲童钢琴教学实践和教学方法探究
- php反序列化失败,php 反序列化报错及解决
- 新手小白如何快速学好PS平面设计?需要什么技巧?
热门文章
- 阿里云——云迁移中心
- div 配搭 display:inline-block
- JEECMS 自定义标签
- GIF表情包怎么制作 QQ动态图如何玩
- 一个iOS程序员的BAT面试经验
- Mybatis的学习
- python--Flask学习(七)--利用Flask中的werkzeug.security模块加密
- 读书笔记--项亮《推荐系统实践》第四章
- vscode登陆中国版leetcode
- 报错Field Mapper in xxx.xxxServiceImpl required a bean of type ‘dao.xxxMapper‘ that could not be found