小数分为整数部分和小数部分,他们之间用点号.分隔,如0.0、7.5、4.098、0.27、-987.333等都是合法小数,这是最常见的小数形式,我们称为十进制形式。
此外,小时也可以采用指数形式,如3.2x103、0.0345x106、100.2323x10-6等。
C语言同时支持以上两种小数形式。
C语言中小数的指数形式为:
aEn 或 aen
其中a为尾数部分,是一个十进制的数字。n为指数部分,是一个十进制整数。e或者E是一个固定字符,用于分隔尾数和指数部分,整个表达式相当于ax10n
通常有两种类型,分别是float和double。float称为单精度浮点型,double称为双进度浮点型。
在C语言中,小数的长度是固定的,这点和整数完全不同。float始终占用4个字节,double始终占用8个字节。
小数也可以用printf函数输出,包括十进制和指数形式,他们对应的格式控制符分别为:
例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a = 0.302;
float b = 128.101;
double c = 123;
float d = 112.64E3;
double e = 0.7623e-2;
float f = 1.23002398;
printf("a=%e \nb=%f \nc=%lf \nd=%lE \ne=%lf \nf=%f\n", a, b, c, d, e, f);
return 0;
}
运行结果:
a=3.020000e-01
b=128.100998
c=123.000000
d=1.126400E+05
e=0.007623
f=1.230024
代码说明:
另外,小数还有一种更加智能的输出方式,就是使用%g
。%g会对比小数的十进制形式和指数形式,以最短的方式来输出小数,让输出结果更加简练。所谓最短,就是输出结果占用最少的字符。
%g的使用:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a = 0.00001;
float b = 30000000;
float c = 12.84;
float d = 1.229338455;
printf("a=%g \nb=%g \nc=%g \nd=%g\n", a, b, c, d);
return 0;
}
运行结果:
a=1e-05
b=3e+07
c=12.84
d=1.22934
代码分析:
需要注意的是:
在C语言中,一个数字是有默认类型的。对于整数,默认是int类型,对于小数,默认是double类型。
例:
long a = 100;
int b = 294;
float x = 52.55;
double y = 18.6;
100个294这两个数字默认是int类型的,将100赋值给a,必须从int转换为long类型,而将294赋值给b就不用转换了。
52.55和18.6这两个数字默认都是double类型的,将52.55赋值给x,必须先从double类型转换为float类型,而将18.6赋值给y就不用转换了。
如果不想让数字使用默认的类型,就可以给数字加上后缀,手动指明类型:
例:
long a = 100l;
int b = 294;
short c = 32L;
float x = 52.55f;
double y = 18.6F;
float z = 0.02;
虽然数字的类型变了,但是不意味着该数字智能赋值给指定的数据类型,他仍然可以赋值给其他类型,只要进行一下转换就可以了。
在C语言中,整数和小数之间是可以相互赋值的:
例:
#include <stdio.h>
int main(){
float f = 251;
int w = 19.427;
int x = 92.78;
int y = 0.52;
int z = -87.27;
printf("f = %f, w = %d, x = %d, y = %d, z = %d\n", f, w, x, y, z);
return 0;
}
运行结果:
f = 251.000000, w = 19, x = 92, y = 0, z = -87
如果需要更加深入的从底层了解小数,或者你想知道小数在内存中是如何存在的,请参考小数在内存中是如何存储的?定点数与浮点数各自的优势在哪?规格化浮点数与非规格化浮点数又表示什么?
文章浏览阅读62次。作者: 链接:http://www.zhihu.com/question/20350041/answer/15564935 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 浏览器在给 hx 标题元素设定默认样式时,使用的是 h1 {font-size: 20..._css魔法
文章浏览阅读813次,点赞13次,收藏10次。的基本规则,明确项目团队成员和其他干系人引导干系人参与的行为。7、变更请求:作为管理干系人参与的结果,当。
文章浏览阅读435次。一:vue.js简介vue是一个响应式的前段视图层框架。响应式:我们在编写模版代码时,仅需关注数据变化即可,数据变化,ui即会变化视图层:类似我们接触的其他前端模版,仅仅是ui层面的内容框架:库提供由其父代码调用的功能,而框架定义整个应用程序的设计。开发人员不调用框架,而是调用库,相反,框架以某种特定方式调用和使用代码。1、vue.js的简单demo例子1:<div id='app'><p>Message is: {{ message }}</p><_vue.js
文章浏览阅读5.3k次,点赞15次,收藏177次。计算机网络知识点总结大全第四章:网络层知识点虚电路:只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。网际协议 IPv4 配套的 3 个协议地址解析协议 ARP2.网际控制报文协议 ICMP3.网际组管理协议 IGMP使用转发器或网桥不称为网络互连,网络互连使用路由器转发器、网桥或交换机仅把一个网络扩大了,仍然是一个网络互联网可以由多种异构网络互连组成。IP 地址:32位二进制代码,将每 8 位的二进制数转换为十进制数_计算机网络期末复习
文章浏览阅读456次,点赞6次,收藏8次。DemoCase studyBenefits:ReliableLimits:DistanceEndpointsControlInterruptBulkChapter 9GadgetFSWebcamMIDIGadgetZeroHardwareFunctionalEndpointsKernel参考:1,eLinux。
文章浏览阅读3.1k次。Everpano 3D导航插件: 曾经想过做360全景虚拟漫游项目让游览,更清晰,不需要用箭头弄乱全景漫游,允许用户自由浏览内容,所以这里是Everpano 3D导航插件Navigator Plugin可以满足。此插件允许一种新的用户交互方式,从现在开始,用户无需搜索热点,而同时又将您的全景图弄得一团糟,而只需单击到全景图中的任意点即可,以防万一我们可以提供场景,否则执行特定操作以使用户..._everpano
文章浏览阅读2.5k次。分布f(x|u,b)=12bexp−|x−u|bf(x|u,b)=12bexp−|x−u|b代码%% laplace distribution% x : variable% b : size para%miu: location parasyms x b miufx = 1 / (2*b) * exp( -abs(x-miu)/b );fx = subs(fx, {miu,b}, {..._matlab得到拉普拉斯分布随机数
文章浏览阅读66次。游戏市场开发指南为所有的游戏开发人员提供了标准的市场参考,包括开发公司、项目小组、程序员、美术设计人员、脚本编辑人员、音乐家和视觉艺术家等。内容涉及了市场信息、游戏定位、销售与后期服务等各方面领域。: Detail..._游戏的市场开发
文章浏览阅读624次。 这一篇我们来讲解C#中的运算符1. C#中的算术运算符 5个算数运算符:+ - * / % 它们都是二元运算符,* / % 的运算优先级相同,并且高于 + - ,+ - 的运算优先级也是相同的。我们可以通过小括号来改变计算的优先级,注意:小括号一定要成对出现。 运算符两边的操作数的类型,要求一致,运算得到的结果也会与操作数的类型一致。..._.net ??运算符号
文章浏览阅读251次,点赞4次,收藏8次。深入解析:proudwind/struts2_vulns - 探索Struts2漏洞与安全防御项目地址:https://gitcode.com/proudwind/struts2_vulns项目简介在GitCode上,proudwind/struts2_vulns是一个专注于研究Apache Struts2框架安全漏洞的开源项目。它的目标是帮助开发者理解并防范Struts2中的常见安全风险,...
文章浏览阅读1.3k次。近日,CMU 的研究人员在 arXiv 上放出了一份技术报告,介绍他们如何通过蒸馏(distillation)训练一个强大的小模型。所提出方法使用相同模型结构和输入图片大小的前提下,在 ImageNet 上的性能远超之前 state-of-the-art 的 FixRes 2.5% 以上,甚至超过了魔改结构的 ResNeSt 的结果。这也是第一个能在不改变 ResNet-50 网络结构和不使用外部...
文章浏览阅读1.8k次,点赞2次,收藏6次。协商缓存与强制缓存vue如何hack元素的数组方法,从而实现响应es6 Class语法 constructor中 super()的作用富文本的存储与渲染中, 如何防止富文本中的编写的代码导致的xss攻击Vue.$nextTick实现原理以及使用异步更新的原因浏览器输入url到页面渲染完毕的过程get与post请求区别如何实现图片懒加载xss及csrf攻击的原理及防御方法合法的[{()}]表达式校验(不校验层级关系)function isValid(str) { let cha._富途前端面经