当前位置:首页 » 编程语言 » c语言编程中计算小数点
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编程中计算小数点

发布时间: 2022-07-23 14:04:59

1. 在c语言计算出的结果中怎么保留小数点

C语言中浮点数输出精确到两位小数的语句如下

double a=2.0;printf ("%.2f", a);//其中.2指明两位小数

说明:如%9.2f
表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,如果9缺省则场宽为该数实际位数
规定符
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%o 无符号以八进制表示的整数
%g 把输出的值按照%e或者%f类型中输出长度较小的方式输出
%p 输出地址符
%lu 32位无符号整数
%llu 64位无符号整数

2. 如何用c语言计算小数点后位数

这个要看小数按什么格式输入。
如果按%s输入,也就是按字符串格式输入,先找到小数点的位置,然后统计下小数点后数字的长度。
具体实现可参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
char a[128];
while(scanf("%s",a)!=EOF)
{
if(strstr(a,".")!=NULL)
printf("%d\n",strlen(strstr(a,".")+1));
else
printf("0\n");
}
system("pause");
return 0;
}
如果按%f(对应float类型小数)或者%lf(double类型的小数)方式读入,则需要先去掉整数部分,然后看小数部分一直乘10减去整数部分,知道等于0,统计,乘了几次10,但是由于浮点数在计算机中存的并不是准确值,这个往往得不到正确的结果。可以使用sprintf(str,"%g",f);,然后由于f毕竟不是准确值,还是会出现有些问题,源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
char a[128];
float f;
while(scanf("%f",&f)!=EOF)
{
sprintf(a,"%g",f);
if(strstr(a,".")!=NULL)
printf("%d\n",strlen(strstr(a,".")+1));
else
printf("0\n");
}
system("pause");
return 0;
}
这是最后一个已经出现错误,所以遇到要精确判断小数点的位数,最好直接按字符串读入,这和图灵机的工作原理暗暗相合。

3. c语言中小数点算不算位

在输出时,小数点算做一位.a++不能被赋值,程序有误,应少写一个加号,a=a+=5;.十进制-16在计算机里是这么表示的,16的二进制码是0000000000010000,若要表示-16,则将16的二进制码取反,得到1111111111101111,再将此数加1,得到1111111111110000,111111110000就是-16在计算机内存中存储形式,称为补码.由于%u表示无符号的整数所以第一位不是符号判断位,所以他会将补码认为是一个正整数,所以此二进制值化为十进制是4294967280.所以%u表示-16的值为4294967280.

4. C语言带小数点的计算问题

printf,sprintf函数系列的第一个参数(也就是字符串输出格式中)中要对小数进行位数限制可以用"%a.bf"的形式表示,其中a是小数点前的位数,b是小数点后的位数
例如:
printf("小数=%7.5f",12.3);
输出结果就是0000012.30000

5. 在c语言中如何指定精确到小数点后任意位数

Note1:
正数 x 四舍五入的技巧:
x --> (int)(x+0.5)
当 x=n+r, 0<=r<1,
若 0<=r<0.5, 则r+0.5<1, (int)(x+0.5)=(int)(n+r+0.5)=n
若 0.5<=r<1, 则1<= r+0.5, (int)(x+0.5)=(int)(n+r+0.5)=n+1

Note2:
举例来说: 若正数要依舍去法精确到小数点后第二位
x --> (int)(x*100)/100 就好.
例如 3.2794 --> (int)(327.94)/100=327/100=3.27

Note3:
举例来说: 若正数要四舍五入精确到小数点后第二位
x*100 四舍五入再除以100 就好
也就是 (int)(x*100+0.5)/100

6. C语言,实现一个除法,能计算到小数点后十万位

临时写的,程序不完整,可能会有漏洞
/*-------------------------------------*/之间的部分需要自己补充,不过基本思想已经体现了,仔细想想应该不难做了
#include
<stdio.h>
#include
<string.h>
/*超级除法函数(只提供整数相除)*/
/*ret为输出的结果,必须保证空间足够*/
/*devidend被除数,divider除数*/
void
SuperDivide(char*
ret,
int
devidend,
int
divider)
{
int
bPointShowed
=
0;
/*用来表示是否出现过小数点了*/
/*使用的数组下标*/
int
i
=
0;
/*取余数用的*/
int
remainder
=
devidend;
/*用这个循环计算*/
while(1)
{
/*被除数大于除数才能除*/
if(remainder
>=
divider)
{
/*用来表示是否除尽了*/
int
bOver
=
0;
/*除尽了*/
if(devidend
%
divider
==
0)
{
bOver
=
1;
}
else
{
/*取余数*/
remainder
=
devidend
%
divider;
}
int
retNum
=
devidend
/
divider;
/*----------------------
这里需要把retNum的每一位数单独填充到ret中,结合下标i++
---------------*/
/*-------------------------------------*/
/*除尽了就跳出了*/
if(bOver)
{
/*如果bPointShowed为0则需要在ret[i]处加上小数点*/
break;
}
}
else
{
/*不够除了*/
remainder
*=
10;
/*如果bPointShowed为0则需要在ret[i]处加上小数点,如果有小数点了则需要补0?*/
}
/*计算到100000位了就跳出吧*/
if(i
>=
100000
-
1)
{
break;
}
}
}
int
main()
{
int
devidend,
divider;
scanf("%d
%d",
devidend,
divider);
char
ret[100000];
/*全部清0*/
memset(ret,
0,
100000);
SuperDivide(ret,
1,
1);
printf("%s",
ret);
return
0;
}

7. 45/56 c语言怎样实现小数点后的计算

#include<stdio.h>
intmain()
{
floata=45,b=56,c=0;
c=a/b;
printf("%f",c);
}

8. C语言编程序时怎么控制浮点型输出的小数点精确到几位

使用输出格式说明符来指定精确到小数点位数。

如:

void main()

{

float a=345.234678;

printf("%.3f ", a) ;

}

其中%.3f里的3就表示输出精确到小数点后3位。

所以可参考的形式是printf("%m.nf",p);

%m.nf,指定输出的数据共占m列,其中有n位是小数。如果数值长度小于m,则左端补空格,若数值长度大于m,则按实际位数输出。

(8)c语言编程中计算小数点扩展阅读:

实型变量分为两类:单精度型和双精度型,

其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

实型变量说明的格式和书写规则与整型相同。

例如: float x,y; (x,y为单精度实型量)

double a,b,c; (a,b,c为双精度实型量)

实型常数不分单、双精度,都按双精度double型处理。

9. C语言中输出时怎样控制小数点后的位数,请举例说明保

#include<stdio.h>
int main(void){
float i = 12.0;
printf("%f\n", i);
printf("%.1f\n", i);
printf("%.2f\n", i);
printf("%.3f\n", i);
printf("%.4f\n", i);
printf("%.5f\n", i);
printf("%.6f\n", i);
printf("%.7f\n", i);
printf("%.8f\n", i);
printf("%.9f\n", i);
printf("%.10f\n", i);
printf("%.11f\n", i);
printf("%.12f\n", i);
return 0;
}运行结果:
12.000000
12.0
12.00
12.000
12.0000
12.00000
12.000000
12.0000000
12.00000000
12.000000000
12.0000000000
12.00000000000
12.000000000000
printf("%f\n",
i);在普通输出控制格式字符的%和f中间加“.#”(其中#为小数点位数)