【数据结构与算法分析】1.3 用printOut函数输出任意实数
2015-11-01 21:55
561 查看
问题描述:
利用打印无符号整数的printOut函数打印任意实数
解决思路:
就是把整数和小数部分拆分打印,这里有好多坑
一是浮点数在计算机中存取的时候是不准确的
二是浮点强转整数采取的“舍去法”
三是你要考虑小数前几位是0和输入的就是一个小数的情况
四是下面的代码是不完整准确的
算法实现:
利用打印无符号整数的printOut函数打印任意实数
解决思路:
就是把整数和小数部分拆分打印,这里有好多坑
一是浮点数在计算机中存取的时候是不准确的
二是浮点强转整数采取的“舍去法”
三是你要考虑小数前几位是0和输入的就是一个小数的情况
四是下面的代码是不完整准确的
算法实现:
#include<stdio.h> void printOut(unsigned int intPart); void printRealNum(double n,int decimal); double n; int deciCount; int main() { while(scanf("%lf",&n)!=EOF){ scanf("%d",&deciCount); printRealNum(n,deciCount); } } void printOut(unsigned int intPart) { if(intPart>=10) printOut(intPart/10); printf("%d",intPart%10); } void printRealNum(double n,int deciCount) { if(n<0){ printf("-"); n=-n; } int intPart = 0; if(n>=1){ intPart = n; printOut(intPart);//输入数据如果就是小数,强制转化就直接成0了 } double decimal = n-intPart; int i,zeroCount = 0; for(i=0;i<deciCount;i++){ decimal*=10; if(decimal < 1) zeroCount++;//左起小数是0的情况 } if(decimal != 0){ printf("."); if(zeroCount) while(zeroCount){ printf("0"); zeroCount--; } intPart = decimal; printOut(intPart); }else{ printf("0"); } }
相关文章推荐
- 【数组项目3-稀疏矩阵的三元组表示的实现及应用——第9周】
- 第八周项目2—数据结构之自建算法库——链串
- 喷水装置(二)
- 经典数据结构和算法回顾
- 《数据结构(严蔚敏版)》学习笔记(五)——串的模式匹配算法
- 第七周--数据结构--队列的实践之排队看病系统
- [OHCI]数据结构
- JavaScript描述数据结构与算法——队列
- 【项目2-3 - 上三角矩阵——第9周】
- 数据结构实践项目——树和二叉树(2)
- 数据结构与算法经典习题解答
- 【项目2 -2- 对称矩阵压缩存储的实现与应用——第9周】
- 哈夫曼编码及解码
- poj2449 Remmarguts' Date
- LeetCode Implement Stack using Queues (数据结构)
- LeetCode Implement Queue using Stacks (数据结构)
- 数据结构单链表前驱结点的寻找过程,仅用一个结点指针即可完成
- 数据结构实践——用二叉树求解代数表达式
- 队列的链式表示和实现(数据结构)
- 【数组项目2-1 - 对称矩阵压缩存储的实现与应用——第九周】