java 循环小数_面试:输出循环小数的循环节
一.引入
偶然在网上看见的,手痒了,就试了试,哈哈。。。。。。。做出来了,实际就是模拟。
下面的来自维基百科:循环小数是从小数部分的某一位起,一个数字或几个数字,依次不断地重复出现的小数。
循环小数即为有理数的小数表示形式,例:
定理:一个分母为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/n(是循环小数的,只输出第一个循环节)
Input 第一行整数T,表示测试组数.后面T行,每行一个整数 n (1<=|n|<=10^5). Output 输出1/n. (是循环小数的,只输出第一个循环节). Sample Inp ...
- 冒泡排序java代码_面试官问我插入排序和冒泡排序哪个更牛逼?
(给算法爱好者加星标,修炼编程内功) 来源:小鹿动画学编程,作者:小鹿同学 写在前边 排序对于每个开发者来讲,都多多少少知道几个经典的排序算法,比如我们之前以动画形式分享的冒泡排序,也包括今天要分享的 ...
- 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?
Java IO概述 IO就是输入/输出.Java IO类库基于抽象基础类InputStream和OutputStream构建了一套I/O体系,主要解决从数据源读入数据和将数据写入到目的地问题.我们把数 ...
- java 委托_面试官:java双亲委派机制及作用
什么是双亲委派机制 当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类. 类加载器的类别 Bootst ...
- vector java 复制_面试官:关于Java性能优化,你有什么技巧
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化. 一般有两种 ...
- java 暂停_面试官问我:平常如何对你的Java程序进行调优?
java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢.接口超时,服务器负载高.并发数低,数据库频繁死锁等.尤其是在"糙快猛"的互联网开发模式大行其道的今天,随着系 ...
- java 快速排序_面试必不可少的几大排序算法,你掌握了吗?
从上学那一刻起,老师就说排序算法很重要,面试的时候考官常会问道,要我们认真的学习,出去工作的学长学姐也说这么说的,那么为了能在面试中取得好的印象,我们很有必要对算法进行了解,以便在面试中取得好的印象, ...
- python 无限循环小数_有关无限循环小数的一处漏洞
[摘 要] 几百年来,人们将无限循环小数划入有理数范围,并允许将其化为分数.本文证明无限循环小数扩大10.100.1000等倍数时将得到错误结果,进而证明将无限循环小数化为分数的行为是错误的,由此暴露 ...
- 循环节长度以及循环节
循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153-.. 其循环节为[846153] 共有6位. 这是一道蓝桥杯的题 ...
最新文章
- 特斯拉AI团队招兵买马:“英雄不问出处”
- 据说是Jack Wu的自定义函数!烂
- 【转】log4net使用详解
- git fatal:HttpRequestException encountered
- python之pop
- ACM训练总结(大二)
- 减少代码行数就是提高生产力!美国防部研究人员开源低代码量的机器学习框架:ktrain...
- 怎么编写java_程序员学编程第一步:手把手教你开发第一个Java程序
- traceping是什么意思_关于CCNA ,ping 与trace 有什么区别
- 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法!
- ajax用iframe,使用ajax Post请求更新iframe内容
- Nginx篇--解读nginx配置
- word导出PDF,彩色无故变成黑色的解决办法。
- 3d打印实用小工具--GCode Viewer在线预览GCODE文件
- 手机通过蓝牙与电脑共享网络
- java delete()_Java File delete()用法及代码示例
- yd什么意思_excel中yd是什么意思
- springboot报错:Could not get a resource from the pool redis.clients.jedis.exceptions.JedisConnection
- 工作站和台式机的区别
- 分子动力学模拟gro格式转换为 car
热门文章
- 探秘Kotlin协程机制
- 安卓开发(2):基本UI界面设计
- java 运行class_运行java的class文件方法详解
- _pickle.UnpicklingError: pickle data was truncated
- 沪江快速手机打字破解版
- 位深度8位什么水平_2位3通电磁阀是什么,2位3通电磁阀工作原理
- 一张图分出你是用左脑还是右脑!
- 谷歌数据迁移到火狐_在Firefox中将约会快速添加到Google日历
- jQuery 如何得到 scrollHeight 的值
- 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)