学习计算机专业有很久了,之前一直看看开源的框架,刷刷Leetcode,想着还是踏踏实实看一些基础的书,就选择了《算法竞赛入门经典》,因为不是要去搞什么ACM(感觉自己智商不够用!),所以就用最熟悉的Java去实现代码。书中思想还是很有帮助的!给自己一个加油!书中习题2-5 ,题目如下:

输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤10 6 ,c≤100。输入包含多组数据,结束标记为a=b=c=0。
样例输入:
1 6 4
0 0 0
样例输出:Case 1: 0.1667
我在网上看到一些代码,但是存在一些BUG,下面给出完整代码!思想就是用数组来存储小数部分的每一位!注意保留位数的时候就行四舍五入!可能有连续进位的情况!

import java.util.Scanner;

public class Decimal {

public static void main(String[]args){
int a,b,c;
Scanner in = new Scanner(System.in);
while(in.hasNext()){
a = in.nextInt();
b = in.nextInt();
c = in.nextInt();
if(a==0&&b==0&&c==0) break;
int[]decimal = new int[101];
int count = 0;
int integer = a/b;
int remain = a%b;
while(count<=c){
remain*=10;
decimal[count] = remain/b;
remain%=b;
count++;
}
count--;
boolean isAdd = false;
if(decimal[count]>=5){
isAdd = true;
}

for(int i=count;i>=1;i--){
if(isAdd){
decimal[i-1]++;
if(decimal[i-1]==10){
decimal[i-1] = 0;
isAdd = true;
}else{
isAdd = false;
break;
}
}else{
break;
}
}
if(isAdd){
integer++;
}
String result = ""+integer+".";
for(int i=0;i<c;i++){
result+=decimal[i];
}
System.out.println(result);
}
}
}

更多相关文章

  1. 求一段与读取数据库数据,写入一个数组的javascript 代码!谢谢!!
  2. java动态编译 (java在线执行代码后端实现原理)
  3. java SSH员工管理系统以及Demo代码下载
  4. JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的
  5. 8/人天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已完整
  6. Java借助Runtime调用外部程序阻塞的代码
  7. Spring SpEL系列二 @Value,xml, Java代码使用SpEL

随机推荐

  1. Android BroadcastReceiver中播放提示语
  2. linux android 如何把android项目打成jar
  3. android异步的几种方式
  4. Android中有时候运行程序的时候会报错:An
  5. 仿微信公众号界面实现
  6. . lang。例:Rect应该与child的界限相交。
  7. 安卓中无限轮播的实现
  8. 【Camera】Android平台Camera实时滤镜实
  9. Say Hello To Android(解析Android项目目
  10. 如何将音频文件与新视频文件合并?是否可以