精华内容
下载资源
问答
  • C语言——整型和浮点型混合运算

    千次阅读 多人点赞 2020-05-08 21:39:53
    C语言int和double混合运算时,会自动将int类型的数据转换为double类型的数据,最后得到的结果也是double类型。如下例: double a=4.0/9.0; int b=9*a;//b=3,因为double类型的4.0/9.0的值要小于4.0/9.0的实际值...

    1. int和double混合运算

    C语言int和double混合运算时,会自动将int类型的数据转换为double类型的数据,最后得到的结果也是double类型。如下例:

    double a=4.0/9.0;
    int b=9*a;//b=3,因为double类型的4.0/9.0的值要小于4.0/9.0的实际值(考虑到有效位数有有限的)

    上面代码中,b=3,因为double类型的4.0/9.0要小于4.0/9.0的实际值,这是由于浮点型有效位数的限制造成的,所以9*a的值要小于4,赋值给int类型的时候发生截断,因此b=3。

    2. 给浮点型数据赋初始值

    给浮点型数据赋初始值的时候,如果用表达式赋初始值,如下式:

    double c=4/9;
    //c=0,因为4/9小于1,int类型截断后为0,然后赋给double类型,发生类型转换,但是结果仍是0;

    则无法给c正确赋值,c得到的初始值是0,而不是4/9表示的小数。因此应该按照下式来赋值:

    double c=4.0/9.0;

    3. 使用#define宏定义时,显式地将数据写成浮点数形式

    #define INDEX (4/9)
    
    int main(void){
        int c=9*INDEX;//此时c=0,因为在编译阶段已经计算了INDEX 为0,所以c=9*0=0
        printf("%d",PI);//打印出的结果为“0”
        //其余代码
    }

    上面的代码展示了在#define宏定义阶段不正确的数据定义会导致一些错误的结果。如果我们希望#define宏定义的表达式表示一个浮点型数据,则应当在定义时显示表示其为浮点型。如下:

    #define INDEX (4.0/9.0)
    
    int main(void){
        double c=9*INDEX;//此时c=4,如果C是int类型,则c=3.
        printf("%f",PI);//打印出的结果为“0.444444”(printf输出浮点型默认6位小数)
        //其余代码
    }

    上述情况在使用#define宏定义一些浮点型数据的时候最容易发生,因此应当注意。

    展开全文
  • 整型浮点型混合运算的截断问题及处理 整型运算赋值给浮点型 整型浮点型混合运算后赋值给浮点型 整型运算赋值给浮点型 情况处理和结论: 整形强制转换运算后赋值给浮点型 ​ 结论 : 不会截断 整形乘100后直接...

    整型浮点型混合运算的截断问题及处理

    • 整型运算赋值给浮点型
    • 整型浮点型混合运算后赋值给浮点型

    1. 整型运算赋值给浮点型

    (1) 情况处理和结论:
    1. 整形强制转换运算后赋值给浮点型

      ​ 结论 : 不会截断

    2. 整形乘100后直接除以整形后赋值给浮点型

      ​ 结论:输出截断,乘100相当于保留两位小数后放大100倍,乘1000相当于保留三位小数

    3. 整形乘1.0f除以整形乘1.0f后赋值给浮点型

      ​ 结论:不会截断,效果等同于(1)

    (2) 代码验证
    #include <stdio.h>
    
    int main()
    {
    	int intera = 0;
    	int interb = 0;
    	
    	float floata = 0.0f;
    	float floatb = 0.0f;
    	
    	int intera = 0;
    	int interb = 0;
    	
    	float floata = 0.0f;
    	float floatb = 0.0f;
    	
    	printf("input intera : "); 
    	scanf("%d",&intera);
    	printf("input interb : "); 
    	scanf("%d",&interb);
    	printf("input floata : "); 
    	scanf("%f",&floata);
    	printf("\n\n"); 
    	
    	//1.整形强制转换运算后赋值给浮点型 
    	floatb = (float)intera/(float)interb;
    	printf("整形强制转换运算后赋值给浮点型:\n");
    	printf("floatb = (float)%d/(float)%d\n",intera,interb);	
    	printf("floatb = %f \n\n", floatb);
    	//输出 : 10/3 = 3.333333 
    	//结论 : 不会截断 
    	
    	//2.整形乘100后直接除以整形后赋值给浮点型 
    	floatb = 100*intera/interb;	
    	printf("整形乘100后直接除以整形后赋值给浮点型 :\n");
    	printf("floatb = 100*%d/%d\n",intera,interb);	
    	printf("floatb = %f \n\n", floatb);
    	//输出:100*10/3 = 333.000000
    	//结论:输出截断,乘100相当于保留两位小数 
    
    	//3.整形1.0f除以整形1.0f后赋值给浮点型 
    	floatb = (intera*1.0f)/(interb*1.0f);	
    	printf("整形1.0f除以整形1.0f后赋值给浮点型:\n");
    	printf("floatb = (%d*1.0f)/(%d*1.0f)\n",intera,interb);	
    	printf("floatb = %f \n\n", floatb);
    	//输出:(10*1.0)/(10*1.0) = 3.333333
    	//结论:不会截断,等同于(1)
    
    
    	return 0;
    }
    

    output:

    2. 整型浮点型混合运算后赋值给浮点型

    (1) 情况和结论:
    1. 整形浮点型混合运算后赋值给浮点型:浮点型除以整型

      ​ 结论 : 不会截断

    2. 整形浮点型混合运算后赋值给浮点型:整型除以浮点型

      ​ 结论 : 不会截断

    	//整形浮点型混合运算后赋值给浮点型1
    	floatb = floata/interb;
    	printf("整形浮点型混合运算后赋值给浮点型1:\n");
    	printf("floatb = %f/%d\n",floata,interb);	
    	printf("floatb = %f \n\n", floatb);
    	//输出 : 13.6/3 = 4.533333 
    	//结论 : 不会截断 
    
    	//整形浮点型混合运算后赋值给浮点型2
    	floatb = interb/floata;
    	printf("整形浮点型混合运算后赋值给浮点型2:\n");
    	printf("floatb = %d/%f\n",interb,floata);	
    	printf("floatb = %f \n\n", floatb);
    	//输出 : 3/13.6 =  0.220588
    	//结论 : 不会截断 
    

    output:

    3. 总结:

    以上所有情况的处理基本都不会引起截断问题,根据需求使用一种方法用就行了。

    但是,同一个项目最好就只使用一种方法处理,尽量避免多种方式混合使用,不是担心程序处理出错,而是避免编写的时候的一些粗心导致不可预知的bug出现而难以定位到错误。

    展开全文
  • C语言浮点型数据不能取余。一个浮点型的数据,转化成整形数据后可以通过除法与取余来获得其个位、十位、百位。先把它强制转换成int型,然后取余 %是可行的。例如浮点型数据521.63,转化成整形后是521,对10取余可以...

    C语言浮点型数据不能取余。

    一个浮点型的数据,转化成整形数据后可以通过除法与取余来获得其个位、十位、百位。先把它强制转换成int型,然后取余 %是可行的。

    例如浮点型数据521.63,转化成整形后是521,对10取余可以获取个位数1,对100取余再除以10取整可以获得十位数2,除以100取整可以获得百位数5。

    f9029852b8869b32b89155e84c10eda1.png

    扩展资料:

    取余运算的运算律:

    1、(a + b) % p = (a % p + b % p) % p

    2、(a - b) % p = (a % p - b % p) % p

    3、(a * b) % p = (a % p * b % p) % p

    4、a ^ b % p = ((a % p)^b) % p

    5、((a+b) % p + c) % p = (a + (b+c) % p) % p (5)

    6、((a*b) % p * c)% p = (a * (b*c) % p) % p (6)

    7、(a + b) % p = (b+a) % p

    8、(a * b) % p = (b * a) % p

    9、(a+b) % p = ( a % p + b % p ) % p

    10、((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p

    参考资料来源:百度百科-浮点型数据

    参考资料来源:百度百科-取模运算

    展开全文
  • C语言浮点数据

    知识点一:浮点型常量的表现形式

    浮点数,即实数,它的表现形式有两种:

    1)十进制小数形式,即由数字和小数点组成(注意这里必须有小数点,如3.0而不能是3);

    2)指数形式,形如:2.3e2。

    知识点二:规范化的指数形式

    在字母e(E)之前的小数部分中,小数点左侧有且只有一位非零数字的,称为规范化的指数形式。

    知识点三:浮点型数据的存放形式

    浮点型数据一般在内存中占4个字节,与整型数据存放方式不同,浮点型数据按照指数形式存放,即把小数部分和指数部分分别存放,具体实现可查阅IEEE754标准。

    知识点四:浮点型变量的分类

    浮点型变量可分为三类:

    1)单精度型:用float表示,32位,有效数字6—7个,数值范围:-3.4e-38~3.4e38;

    2)双精度型:用double表示,64位,有效数字15—16个,数值范围:-1.7e-308~1.7e308;

    3)长双精度:用long double表示,128位,有效数字18—19个,数值范围:-1.2e4932~1.2e4932。

    知识点五:浮点型数据的有效数字

    有效数字,是能够准确描述一个浮点型数据的能力,如单精度的有效数字是6—7个,则对于123456789.82这个数1234567这7位可以准确描述但对于后面的89.82则不能准确描述,如下列代码:

    #include <stdio.h>

    int main()

    {

    float f = 123456789.789;

    printf("%f\n",f);

    }

    输出结果:123456792.000000

    因此有效数字即浮点型数据中的整数和小数个数的和,在进行浮点型数据的运算时一定要注意有效数字这个问题。

    知识点六:浮点型常量的类型

    浮点型常量默认作为双精度,如3.0并非float类型而是double类型,这样做的好处是提高运算的精度但影响运算速度,因此,如果需要直接按float类型对数据进行运算,则在数字后面加f即可。

    知识点七:1.0÷3.0×3为什么不等于1

    因为除号和乘号的运算优先级相同,因此,对于1.0÷3.0×3的运算是先计算1.0÷3.0=0.333……,然后用这个结果乘以3,所以结果为0.9999……。

    对于这个问题,有些编译系统已经进行了有效的处理,即运算的结果为1,但作为开发者对于此类问题需妥善处理,如针对此问题,在预先知道存在循环小数的情况下,应当先进行乘法运算,然后进行除法运算,即将1.0÷3.0×3改为1.0×3÷3.0。

    请扫描下方二维码,获取更多C语言资料↓↓↓↓

    展开全文
  • 方星星 吕永强摘 要 C语言的基本数据类型分为:整型、字符型和浮点型,大多C语言教材都概括了整型和字符型数据的编码及输入输出,但并未详细介绍浮点型数据的编码及输入输出,这导致很多学生不能灵活运用这一知识点...
  • C语言中说的浮点型是什么意思呢 C语言的浮点数是什么C语言中说的浮点型是什么意思呢 C语言的浮点数是什么相关问题:匿名网友:就是这个数就像有一个飘动的小数点,也就是我们学数学中说的科学计数法。它由阶码和尾码...
  • 本篇博客将阐述、讨论的内容:●...●unsigned int(无符号整型)以16位系统为例,unsigned int能存储的数据范围是0~65535(需要注意整数是以补码形式存放)。其进行的是模数计算,也就是所谓的二进制相加减,计算方...
  • c/c++浮点型数据转换成整型数据

    千次阅读 2021-05-22 17:29:54
    在c/c++中我们经常由于需要,要把浮点型数据(float、double)转换成整形数据(各种int),下面我给大家介绍一下我所知道的,希望能给大家以后的编程带来方便:1.普通的强制转换:可实现 “下行”整型化——即将浮点数...
  • 运算中含有浮点型是以浮点型的规则进行运算,当出现整数常数时,如3,可以写成3.0来表示浮点型格式。 以下举例来说明一些情况: 浮点型*整数型,这个是以浮点型运算的; 整数型/整数型×浮点型,同级运算从左到...
  • C语言浮点数运算

    2012-05-22 19:32:00
    有些C语言书上说float的有效位数是6~7位,为什么不是6位或者7位?而是一个变化的6~7位? 浮点数在内存中是如何存放的? float浮点数要比同为4字节的int定点数表示的范围大的多,那么是否可以使用浮点数替代定点...
  • 编程细节:浮点型数值的比较 浮点型数值不能直接比较,要先定义一个极小值,如果两个数的差值小于这个极小值,则认为两个数相等 #define MIN 0.0000000001 //定义一个极小值 double temp = 2.5; if(abs(temp - ...
  • 第二章C语言数据类型和运算课案第二章 C语言数据类型和运算2.1 数据类型数据是计算机加工处理的对象,C语言中的数据包括:常量、变量和有返回值的函数。为存储和处理的需要,将数据划分为不同的类型,编译程序为...
  • C语言学习(三)数据-浮点类型

    万次阅读 2018-05-23 17:36:20
    C语言中的浮点类型有float、double和long double类型。 C标准规定,float类型必须至少能表示6位有效数字,且取值范围至少是10的-37次方~10的+37次方(不能把指数缩到右上角,此处为替代写法)。 前一项规定指...
  • 虽然昨天已经看玩了数据类型,但是并没有做习题,本以为会很轻松,谁知遇到了一个神奇的问题: 书上说%f对应的是float 和double 两种类型,lf%对应的是long double 这个很容易理解,在c prime plus中描述: 它们向...
  • 1 题目描述 ...C语言中float数据类型向int类型转换时,会发生数据值的截断。     例如:将3.1415926赋值给一个int类型,赋值结果为3.     据此,设计如下实
  • 1.整型数据类型C定义了5种整型数据类型。整型数据类型表序号类型名称说明字节数取值范围1signed char有符号的单字节整数类型1-128~+1272short int短整型2-32768~+327673int整型4-2147438648~+21474386474long int长...
  • 一、整型数据的分类类型字节数输出格式unsigned int4%d[signed] int4%uunsigned short [int]2%hd[signed] short [int]2%huunsigned long [int]4 (32位) 8 (64位)%ld[signed] long [int]4 (32位) 8 (64位)%lu(带 [] ...
  • 让你彻底明白c语言浮点型及整型除法问题

    千次阅读 多人点赞 2021-05-12 15:03:54
    C初学者在学到浮点型的时候,经常会有很多疑惑,下面是一些疑惑的解答: 首先,看下面的一个简单的程序 printf("%d",(3+3/4)*100); 很多初学者会认为结果是(3+0.75)*100=375 其实不然,结果应为300。 在C中,如果...
  • C语言数值型数据之间的混合运算数值型数据之间的混合运算自动转换强制类型转换 ...如 int 型和 long 型运算时,先把 int 量转成 long 型后再进行运算。 所有的浮点运算都是以双精度进行的,即使仅含
  • 用菜单实现计算器的功能,虽然选项5的功能还不完善,但是对于我这样一个只会C语言,而且C语言基础还不好的小白来说,已经不错了。前四个选项分别是实现连加,连减,连乘,连除(考虑除数为零)。 题目: 输入一个...
  • C语言关于浮点型赋值的注意事项

    千次阅读 2021-05-07 13:46:49
    C语言关于浮点型赋值的注意事项 无论是float 还是 double 赋值的时候都要注意下面几点: 注意赋初值,且若要为0 则赋值 0.0 而不是 0,因为这样更规范,例如要赋值3,则 赋值 3.0; 参与运算并把结果赋予浮点型时...
  • C语言的混合运算,情况较多,死记硬背必然达不到预期的效果。如果理解了如下几个问题,那C语言的混合运算问题将必然迎刃而解。一、存储形式在C中,整型和字符(以ASCII码表示)都是以二进制补码存放的,正数的补码为...
  • 目标 输入某人的身高(cm),计算 Ta 要保持标准...浮点类型数据可以参与算术运算、关系运算、逻辑运算等。计算机有两套算术运算的单元:整型的和浮点类型的。如果两个操作数都是整型数据,则系统采用整型运算运算
  • 我们在单片机C语言中使用float浮点型运算的时候需要特别注意精度问题,比如下面 float f =0X03FF/0X0FFF;则结果为f=0; float f=(float)0X03FF/0X0FFF;结果才正确 ...
  • c语言数据类型运算的注意来源:华强电子网作者:华仔浏览:966时间:2016-08-10 14:18标签:摘要:在C语言程序的表达式或变量赋值运算中,有时会出现运算对象的数据不一致的情况。C语言允许任何标准数据类型之间的...
  • 20145302张薇《课程设计》数据恢复——WinHex实践 20145302张薇数据恢复--WinHex实践 实践内容 使用WinHex破损一个U盘 使用WinHex通过DBR备份数据来修复已损坏U盘 实践详细步骤 1.准备一个文件格式 ... CentOS 6.6...
  • 浮点型数据讲解

    千次阅读 2020-08-19 13:45:11
    以下内容摘抄字谭浩强老师的程序设计基础第五版3.2.5浮点型数据 浮点型数据是用来表示具有小数点的实数的。为什么在C语言中把实数称为浮点型数呢?在C语言中,实数是以指数形式存放在存储单元中的。一个实数表示为...
  • 故应该把bc定义为浮点类型。 再看一个例子: # include # include int main ( ) { int i = 1 , d = 1 , t ; double pi = 0.0 ; for ( ; ; d ++ , i + = 2 ) { if ( d % ...
  • 第一章 C语言概述1.C语言适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件2.C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此C语言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,079
精华内容 11,231
关键字:

c语言浮点型数据运算

c语言 订阅