C语言 提取double的每一位

#include<stdio.h>
int main()
{
double x = 256.141592654;
int n = (int)x % ; //整数部分
while(n) //整数部分输出
{
int temp = n % ;
n /= ;
printf("%d\n", temp);
} int i = ;
while(i>) //输出5位小数
{
x = x*;
printf("%d\n",(int)x%); //强制将double转换成int,因为求余(%)必须为int类型,
i--;
} return ;
}

附:C语言,如何输出每一位数字? https://zhidao.baidu.com/question/584309257492424645.html

一、传统方法,通过除法和模除,取出每一位,并输出。

#include<stdio.h>
void output(int n)
{
int a[];
int l=;
/*
循环获取每一位的值,并存到数组a中。
其中l表示已经获取到的位数。
由于每次获取的是个位n%10,所以存在数组a中的是各个位数的逆序。
*/
while(n)
{
a[l++] = n%;
n/=;
}
//反序输出每一位值。
while(--l>=)
printf("%d ", a[l]);
}
int main()
{
int n;
scanf("%d",&n);//输入n值。
output(n);//输出各个位。
return ;
}

二、转为字符串,然后输出字符串各个字符。

由于在C语言中,有很多库函数,比如itoa, sprintf等,都可以很方便的将整数转为字符串,而逐位输出字符串各个字节值是很简单的,所以可以通过转为字符串,再输出的方式输出各个位的值。

#include<stdio.h>
void output(int n)
{
char a[];
int i;
sprintf(a, "%d", n);//转为字符串。
for(i = ; a[i]; i++)//遍历字符串。
printf("%c ", a[i]);//输出各个位值。
}
int main()
{
int n;
scanf("%d",&n);//输入n值。
output(n);//输出各个位。
return ;
}
上一篇:安装原版Win8.1并激活


下一篇:spring Boot异步操作报错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.self.spring.springboot.Jeep' available