整数/小数以字符串形式输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整数/小数以字符串形式输出相关的知识,希望对你有一定的参考价值。

1、问题描述

  (1)、现在从键盘输入一个整数(以%d格式符输入),要求以装换成字符串的形式输出;

  (2)、现在从键盘输入一个小数和小数位数(%lf%d),要求以字符串的形式输出;

  这2个问题本身并不难,但是考虑全面和从算法上的优化确实不容易的,需要仔细认真的考虑!

2、用C实现

在VC下面用的VC++6.0版本实现

#include<stdio.h>

void printfInt(int data);
void printfDouble(double data, int count);

void printfDouble(double data, int count){
    int d = (int)data;
    double x = data - d;
    int i, tmp;
    int p = 1;

    printfInt(d);
    printf(".");
    for(i = 0; i < count; i++){
            p *= 10;
    }
    tmp = (int)(p*x+0.5);//在强转时,由于有截断误差,所以加上0.5,保证了小数点最后一位的取值是正确的。
	printfInt(tmp);
}

void printfInt(int data){
    int q = 1;

    if(data > 1000000000){
            q = 1000000000;
    }else if(data > 100000000){
            q = 100000000;
    }else if(data > 10000000){
            q = 10000000;
    }else if(data > 1000000){
            q = 1000000;
    }else if(data > 100000){
            q = 100000;
    }else if(data > 10000){
            q = 10000;
    }else if(data > 1000){
            q = 1000;
    }else if(data > 100){
            q = 100;
    }else if(data > 10){
            q = 10;
    }

    for(; q; q /= 10){
            printf("%c", ‘0‘ + (data/q)%10);
    }
}

int main(void){
    int number;
    double x_number;
    int bit;

    printf("请输入一个整数 : ");
    scanf("%d", &number);
    printf("请输入小数,和小数位数 : ");
    scanf("%lf%d", &x_number, &bit);

    printfInt(number);
	printf("\n");
    printfDouble(x_number, bit);
	printf("\n");
}

运行结果

技术分享

3、算法分析

  (1)、我用的是if...else if...else if来判断这个数是几位数,因为用这个数每次/=10也可以判断是几位数,但是效率比较低,用if判断的方法最多10次,就可以知道是几位数字。

  (2)、其次,我知道了是几位数,就可以让(data/q)%10,data不变,让q/=10,在循环中每次调用这个语句,就可以从最高位--->最低位顺序取出,再加上‘0‘,就转换为一个一个的字符了,输出即可。


本文出自 “11586096” 博客,请务必保留此出处http://11596096.blog.51cto.com/11586096/1852949

以上是关于整数/小数以字符串形式输出的主要内容,如果未能解决你的问题,请参考以下文章

NSLog()输出函数集格式字符

2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num

C++:怎样使用printf函数,越详细越好

c语言如何让输出结果精确到两位小数

2019年9月27日13:21:04

正整数提取