计算分数的精确值-高精度除法
2016-06-28 11:33
351 查看
描述
计算分数的精确值。使用数组精确计算M / N(0 < M < N ≤ 100)的值。如果M / N是无限小数或小数部分超过20位,则精度要求小数点后20位,并输出。说明
由于计算机内字长有限,常规的浮点数运算都有精度限制,为了得到高精度的计算结果,就必须自行设计算法,这里涉及到的算法是高精度算法中的除法。提示
可以将商存放在一维数组中,进行除法运算,可模拟人的手工操作,即每次求出商的一位后,将余数乘以10,再计算商的下一位。若某次余数为0,则为有限不循环小数。若某次计算后的余数与前面某个余数相同时,则M / N是无限循环小数。代码C
#include<stdio.h> int main() { int M, N; int place[25]; while (~scanf("%d %d", &M, &N)) { printf("0."); int key = 0; while (M % N && key < 20) { M *= 10; place[key] = M / N; M %= N; printf("%d", place[key++]); } printf("\n"); } return 0; }
另:如果想要判断其是否是循环小数以及循环节具体是什么,只需要加一个存放余数的数组,再加一个余数的对比(循环),查找是否存在相同的余数。
相关文章推荐
- VIJOS P1040 高精度乘法
- 1874. Three little pigs
- 偶数之和
- Sicily 1488 矩阵取数游戏
- Sicily 1166 Computer Transformat
- 阶乘——高精度求法
- [BZOJ1089][SCOI2003][递推][高精度]严格n元树
- HDU1063 Exponentiation
- lab104_2
- POJ1001大数相乘
- POJ1503大数相加
- 高精度计算bign类
- 424 Integer Inquiry题解
- 高精度4位压缩法原理与实现
- c++大整数类的几种实现方法与解析
- 关于大斐波数
- 高精度数字
- 高精度算法
- 杭电OJ题 1592 Half of and a Half 解题报告
- 高精度除法