您的位置:首页 > 理论基础 > 数据结构算法

【数据结构与算法分析】1.3 用printOut函数输出任意实数

2015-11-01 21:55 561 查看
问题描述:

利用打印无符号整数的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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: