io打印整数实数

#include<stdio.h>
#include<math.h>
//打印任意整数 
void printDigit(int count){
    if(count>0){
        if(count>10){
            printDigit(count/10);
        }
        //else
        {
            printf("%d",count%10);
        }
    }else{
        count=0-count;
        printf("-");
        printDigit(count);
    } 
    
} 

//自已实现round函数
float  myRound(float count,int num){
    double f=pow(10.0,double(num));
    double t;
    double x=count*f;

    if(x>=0){
        t=ceil(x);
        if((t-x)>0.500000000001){
            t-=1.0;
        }
    }
    ///只处理正的
    else{
        t=ceil(-x);
        if((t+x)>0.500000000001){
            t-=1.0;
        }
        t=-t;
    } 
    x=t/f;
    
    return float(t);
}

//找印任意实数   round实现了四舍五入 
void printDigit2(float count,int num){
    int mode=1;
    if(count>0){
        for(int i=0;i<num;i++){
            count=count*10;
            mode=mode*10;
        }
        
        count=myRound(count,0);
         
        
        int num1=count/mode;
        int num2=(int)(count)%mode;
        printDigit(num1);
        printf(".");
        printDigit(num2); 
    }else if(count<0){
        printf("-");
        printDigit2(0.0-count,num);
    }

} 

int main(){
    printDigit2(-203.4567,4);
} 

点赞