一.引入

偶然在网上看见的,手痒了,就试了试,哈哈。。。。。。。做出来了,实际就是模拟。

下面的来自维基百科:循环小数是从小数部分的某一位起,一个数字或几个数字,依次不断地重复出现的小数。

循环小数即为有理数的小数表示形式,例:

定理:一个分母为N的循环小数的循环节位数最多不超过N-1位。

(1) 化为分数的方法

我先想到用高中的等比数列的和求极限方式求取(a1/(1-q))。

(2)利用长除法可以将分数(有理数)转化为循环小数。                        

二.Java实现

import java.util.Arrays;

public class Xiaoshuo {

//使用char类型可以省内存也可以直接存储小数点

static char[] ch = new char[20];

public static void main(String[] args) {

// TODO Auto-generated method stub

Arrays.fill(ch,'#');

int a = 5;

int b = 4;

int index = 0;

//在函数外部做处理方便多了

if(a>=b) {

if(a%b==0) {

System.out.println(a/b+".0");

return ;

}

System.out.print(a/b);

ch[0] = '.';

index = 1;

a = a%b;

}else {

ch[0] = '0';

ch[1] = '.';

index = 2;

}

solve(index,a,b);

}

private static void solve(int index, int a, int b) {

// TODO Auto-generated method stub

//判断余数(你也可以叫商,好好看除法过程)是否出现过

int from = -1;

int to = -1;

while(from==-1) {

a *= 10;

//必须加上48

ch[index++] = (char)(a/b + 48);

//不能再找到自身,所以需要第二个参数

from = tell((char)(a/b+48),index-2);

a = a%b;

}

to = index -2;

for(int i=0; i

System.out.print(ch[i]);

}

System.out.print("{");

for(int i=from; i<=to; i++) {

System.out.print(ch[i]);

}

System.out.println("}");

}

private static int tell(char mod, int xiabiao) {

// TODO Auto-generated method stub

//先找到小数点后一位

char c = ch[0];

//index必须从0开始,因为有可能第一个就是小数点

int index = 0;

while(c!='.') {

index++;

c = ch[index];

}

//index是小数点的位置,所以从下一位开始

index++;

//采用while(mod1=‘#’)循环不行,这样是最好的,既有下标,又到非法字符处结束(前提是数组比较大,填充了非法字符)

for(int i=index; i<=xiabiao; i++) {

if(mod==ch[i])

return i;

}

return -1;

}

}

三.感悟

在函数外部先做数据处理化成统一格式方便多了。。。。。。。

java 循环小数_面试:输出循环小数的循环节相关推荐

  1. 输出1/n(是循环小数的,只输出第一个循环节)

    Input 第一行整数T,表示测试组数.后面T行,每行一个整数 n (1<=|n|<=10^5). Output 输出1/n. (是循环小数的,只输出第一个循环节). Sample Inp ...

  2. 冒泡排序java代码_面试官问我插入排序和冒泡排序哪个更牛逼?

    (给算法爱好者加星标,修炼编程内功) 来源:小鹿动画学编程,作者:小鹿同学 写在前边 排序对于每个开发者来讲,都多多少少知道几个经典的排序算法,比如我们之前以动画形式分享的冒泡排序,也包括今天要分享的 ...

  3. 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?

    Java IO概述 IO就是输入/输出.Java IO类库基于抽象基础类InputStream和OutputStream构建了一套I/O体系,主要解决从数据源读入数据和将数据写入到目的地问题.我们把数 ...

  4. java 委托_面试官:java双亲委派机制及作用

    什么是双亲委派机制 当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类. 类加载器的类别 Bootst ...

  5. vector java 复制_面试官:关于Java性能优化,你有什么技巧

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化. 一般有两种 ...

  6. java 暂停_面试官问我:平常如何对你的Java程序进行调优?

    java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.尤其是在"糙快猛"的互联网开发模式大行其道的今天,随着系 ...

  7. java 快速排序_面试必不可少的几大排序算法,你掌握了吗?

    从上学那一刻起,老师就说排序算法很重要,面试的时候考官常会问道,要我们认真的学习,出去工作的学长学姐也说这么说的,那么为了能在面试中取得好的印象,我们很有必要对算法进行了解,以便在面试中取得好的印象, ...

  8. python 无限循环小数_有关无限循环小数的一处漏洞

    [摘 要] 几百年来,人们将无限循环小数划入有理数范围,并允许将其化为分数.本文证明无限循环小数扩大10.100.1000等倍数时将得到错误结果,进而证明将无限循环小数化为分数的行为是错误的,由此暴露 ...

  9. 循环节长度以及循环节

    循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.  比如,11/13=6=>0.846153846153-.. 其循环节为[846153] 共有6位. 这是一道蓝桥杯的题 ...

最新文章

  1. 特斯拉AI团队招兵买马:“英雄不问出处”
  2. 据说是Jack Wu的自定义函数!烂
  3. 【转】log4net使用详解
  4. git fatal:HttpRequestException encountered
  5. python之pop
  6. ACM训练总结(大二)
  7. 减少代码行数就是提高生产力!美国防部研究人员开源低代码量的机器学习框架:ktrain...
  8. 怎么编写java_程序员学编程第一步:手把手教你开发第一个Java程序
  9. traceping是什么意思_关于CCNA ,ping 与trace 有什么区别
  10. 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法!
  11. ajax用iframe,使用ajax Post请求更新iframe内容
  12. Nginx篇--解读nginx配置
  13. word导出PDF,彩色无故变成黑色的解决办法。
  14. 3d打印实用小工具--GCode Viewer在线预览GCODE文件
  15. 手机通过蓝牙与电脑共享网络
  16. java delete()_Java File delete()用法及代码示例
  17. yd什么意思_excel中yd是什么意思
  18. springboot报错:Could not get a resource from the pool redis.clients.jedis.exceptions.JedisConnection
  19. 工作站和台式机的区别
  20. 分子动力学模拟gro格式转换为 car

热门文章

  1. 探秘Kotlin协程机制
  2. 安卓开发(2):基本UI界面设计
  3. java 运行class_运行java的class文件方法详解
  4. _pickle.UnpicklingError: pickle data was truncated
  5. 沪江快速手机打字破解版
  6. 位深度8位什么水平_2位3通电磁阀是什么,2位3通电磁阀工作原理
  7. 一张图分出你是用左脑还是右脑!
  8. 谷歌数据迁移到火狐_在Firefox中将约会快速添加到Google日历
  9. jQuery 如何得到 scrollHeight 的值
  10. 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)