C要点5:float、double、long double(大小,范围,输入输出符,科学计数法) |
您所在的位置:网站首页 › float小数点后几位有效 › C要点5:float、double、long double(大小,范围,输入输出符,科学计数法) |
原文链接 浮点型:数学里的小数 C语言浮点型有三个类型:float、double、long double 输入输出输出格式符: 默认输出6位小数 float–%f double、long double–%lf 不初始化不行 %e 科学记数法,形式如:2.23e2其中e–10 float内存大小:4字节,由sizeof(float)获取 表示范围:-2^128 ~ +2^128,也即约-3.40282e+38 ~ +3.40e+38 这些数不用记,知道范围超级大就行了 标准规定:float指数范围不小于-37~38,e是10,所以有的环境下,精度会高一些 默认范围:头文件 float.h宏 FLT_MIN 有效数位:float也叫单精度浮点型 ANSI C规定最小值是6,有的编译器可能8位,可能7位 注意不是小数的位数,是以第一个非0数字开始数6位 比如:12345.6789,6位精度位指的是12345.6,后面得789就是非精度位,也就是不要考虑了,789将会是不精确存储。 0.00012456789,6位精度位指的是123456,789就不用考虑是否准确了 double内存大小:8字节,由sizeof(double)获取 表示范围:-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308 标准规定:double指数范围不小于-3738,实际实现-307308 有效数位:double又叫双精度浮点型 ANSI C规定最小值是10位, 多数编译器是15,16,17位左右 long double内存大小:规定不小于double的长度,至少8字节,不同的编译器这个字节数可能不同,有的是8,有的是10,有的是12,有的甚至更大。那么这个字节数就以自己使用的编译器为准,测一下,知道有这个区别。 表示范围:那这个就依据大家自己的测试,字节数越大,精度就越大 Visual Studio里long double跟double是一样8字节 测试gcc,是12字节 有效数位:ANSI C规定最小值是10位,实际中依据环境具体实现,vs测是18位 后缀: 后缀: L /l 0.2l/0.2L long double数据 无后缀: 0.2 double数据 后缀: F/f 0.2F/0.2f float数据 问题:如果不是对应的,会涉及到类型转换,类型转换的结果可能会造成内存截断,导致数据不是我们想要的,所以需要尽量保持一致 为啥要转换:只有数值类型一样了,计算机才能进行计算,不一样就转成一样的 输入输出 printf输出浮点型 %f,%lf这两个都行,输出没有严格要求,默认是6位小数,第六位四舍五入 %5.2f /lf 5代表整个数占据屏幕多少个字符位,多了有效果,少了无效果 . 表示小数点 2表示小数的位数,第二位是四舍五入 %e 科学记数法。123.34输出1.233400e+02 默认6位小数,也可控制%.4e,就输出1.2334e+02 e是10, +02是正2次方 scanf输入浮点型 float %f double %lf long double %lf 输入浮点型,格式符一定要跟类型对应上,否则就出错 浮点型的存储 float:1bit(符号位) 8bits(指数位) 23bits(尾数位) 最高位是符号位:1代表负数,0代表正数 指数位:-2^7~ 2^7-1 -128~127 有效数位(尾数位):2^23 8388608 7位 double:1bit(符号位) 11bits(指数位) 52bits(尾数位) 最高位是符号位:1代表负数,0代表正数 指数位:-210~210-1 -1024~1023 有效数位(尾数位):2^52 4503599627370496 16位 选择使用 根据自己的需求:float(4字节,6精度)、double(8字节,最少10精度,一般都是实现15精度) 常用,long double一般用的不是很多,因为我们不需要那么高的精度。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |