本文目录一览:
- 1、c语言中小数怎么表示
- 2、在C语言中,怎样取小数只取2两位 然后赋值给字符串?
- 3、C语言中如何定义小数
- 4、c语言中要如何声明一个小数变量,用哪一个字符串格式对其赋值
- 5、C语言赋值中除法计算怎么保留N位小数?
c语言中小数怎么表示
两种表示方式:
1、定点表示:必须有小数点。
例如:0.123, .123, 123.0。
2、指数表示:e或E之前必须有数字,指数必须为整数。
例如:12.3e3 ,123E2, 1.23e4。
注意:浮点数常量默认为double类型,如果浮点数常量表示float类型,在末尾添加小写的f或者大写的F,表示此常量为单精度浮点常量。
定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。若数据x的形式为x=x0.x1x2…xn(其中x0为符号位,x1~xn是数值的有效部分,也称为尾数,x1为最高有效位),则在计算机中的表示形式为:
一般说来,如果最末位xn= 1,前面各位都为0,则数的绝对值最小,即|x|min= 2^(-n)。如果各位均为1,则数的绝对值最大,即|x|max=1-2^(-n)。所以定点小数的表示范围是:2^(-n)≤|x|≤1 -2^(-n)。
扩展资料
由于“编码总位数为8”的限制,真值-128无法用原码、反码来表示,似乎不能用上述规则来求解补码,但实际上是可行的——只要不管它的最高位即可,操作办法如下:
将128化为二进制为:1 0000000,最高位为1,可以只对舍去最高位后剩余的7位进行处理即可,首先取反得:1111111,加1得:1 0000000,最高位有进位需丢弃,即得:0000000,加上符号位就得补码:1 0000000。
又如,当编码总位数为4时,真值X=+0.101的原码、反码、补码均为:0 101。
真值X=-0.101的原码、反码、补码依次为:1 101、1 010、1 011。
同理,特例,-1的补码为:1 000。
在定点小数中,小数点隐含在第一位编码和第二位编码之间
定点小数,是指小数点准确固定在数据某个位置上的小数,从实用角度看,都把小数点固定在最高数据位的左边,小数点前边再设一位符号位。按此规则,任何一个小数都可以被写成 :N = NS . N-1 N-2 … N-M。
参考资料来源:百度百科-定点小数的表示方法
在C语言中,怎样取小数只取2两位 然后赋值给字符串?
方法:
定义字符数组用来存储字符串
定义浮点数赋值,如:double d=1.23456;
用sprintf()的%.2f格式截取浮点数的小数位,第三位四舍五入
输出结果验证
参考代码:
附:sprintf()函数格式说明(与printf格式相同):
%m.nf m是输出输出数据最小字符宽度(可省,按实际长度输出),n为小数点后保留位数(0表示不输出小数位和小数点),第n+1位四舍五入,f表示按浮点数输出。
C语言中如何定义小数
C语言中用于描述小数的数据类型是float和double,float类型表示单精度浮点数,double表示双精度浮点数。
C语言中浮点数常量有两种表示方式:
1、定点表示:(必须有小数点)
如:0.123,
.123,
123.0。
2、指数表示:(e或E之前必须有数字,指数必须为整数)如:12.3e3
,123E2,
1.23e4。
错误的写法:e-5
,1.2E-3.5,e3。
注意:浮点数常量默认为double类型,如果浮点数常量表示float类型,请在末尾添加小写的f或者大写的F,表示此常量为单精度浮点常量。
float f1 = 1.1f; //小写f
float f2 = 1.1F; //大写F
double d = 1.1; //double类型
c语言中要如何声明一个小数变量,用哪一个字符串格式对其赋值
其实用c也很简单的,c里有用于处理字符串的头文件string.h
strcat()函数就是将两个字符串连接
不过在c里面是没字符串变量这个概念的,用字符指针来实现
下面是程序
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
main(){
char
*send
=
"whatyouwant";/*用你想要的东西代替whatyouwant稍改一下可以自己输入,自己完成这个功能吧*/
char
*addr;
addr
=
strcat(send,"@163.com");/*将@163.com连接到send的后面*/
printf("%s",addr);
/*打印结果*/
getch();
}
本人亲自编译通过
C语言赋值中除法计算怎么保留N位小数?
方法一:通过数学方法判断分数是否是无限循环小数,需要确定分子分母是否互质,另外还要判断小数从第几位开始无限循环,比较麻烦。
方法二:直接讲分数运算结果转换成字符串,然后写函数进行字符串比较。代码如下:
#includestdio.h
#includestring.h
int checkAnswer(char solution[],char answer[]);//检查回答是否与答案匹配,是返回1,否返回0
int main()
{
char solution[20];//存储1/3的答案字符串
char answer[20];//存储用户输入的回答
sprintf(solution,"%.16lf",1.0/3);//把除法运算结果转化成字符串保存,作为答案
while(1)
{
printf("-----------------\n输入1/3的答案:");
scanf("%s",answer);
if(checkAnswer(solution,answer))
printf("回答正确!\n");
else
printf("回答错误!\n");
printf("-----------------\n");
}
return 0;
}
int checkAnswer(char solution[],char answer[])//检查回答是否与答案匹配,是返回1,否返回0
{
int i,len1=strlen(solution),len2=strlen(answer),len;
if(len2len1)
len=len1;
else
len=len2;
for(i=0;ilen;i++)
if(solution[i]!=answer[i])
return 0;
return 1;
}