C语言 标准化指数形式 规范化指数形式
2. 5.6789e+003
003什么意思 直接5.6789e+3不就行了?
3. 1.2345e-3 表示0.0012345?
1楼的 你只是给我讲了 标准化 和 规范化指数形式 你没回答我 2. 3. 问题啊?? 展开
指数形式是浮点数的一种表示方法。
一、在C语言中,浮点数,包括float和double类型,有两种表示方法:
1、实数形式,即1.23这样整数部分加小数部分的表示方式;
2、指数形式,即科学计数法。
其形式为:
aEb
代表a乘10的b次幂。 E也可以是小写,b必须为整数。
二、指数形式只是浮点数的一种表示方法,任何一个浮点数,都有实数形式和指数形式。
如:
12345.6 和1.23456E4是完全相同的。 所以,不存在转换为指数形式。
三、指数形式输出:
在输出的时候,可以指定浮点数输出为指数形式,格式为%e或%E, 区别为输出的指数形式浮点数E为小写或者大写。
如:
printf("%e", 100000.0);
会输出1.000000e+05。
扩展资料
1、指数形式只是浮点数的一种表示方法,任何一个浮点数,都有实数形式和指数形式。
.2、在输出的时候,可以指定浮点数输出为指数形式,格式为%e或%E, 区别为输出的指数形式浮点数E为小写或者大。
1、在指数形式的多种表示方式中把小数部分中小数点前的数字为0、小数点后第1位数字不为0的表示形式称为规范化的指数形式,如0.314159*10^1就是3.14159的规范化的指数形式。
2、一个实数只有一个规范化的指数形式,在程序以指数形式输出一个实数时,必然以规范化的指数形式输出,如:0.314159e001。
规范化指数形式1.23456要二进制存放需分别存整数部和小数部,而0.123456则只需存小数部,这样在占用相同字节的情况下,后一种方法可容纳更大精度的浮点数。
扩展资料
用格式声明%e指定以指数形式输出实数。数值按标准化指数形式输出(即小数点前必须有而且只有1位非零数字)。
例如:
printf("%e",123.456);
输出如下:
1.234560e+002。
一个实数在用指数形式输出时,是按规范化的指数形式输出的。例如,指定实数5689.65按指数形式(%e格式)输出,输出的形式只能是5.68965e+003,而不会是0.568965e+004或56.8965e+002.
规范化指数形式本来是1.23456e3的,为什么谭浩强的书上说实型数据在内存中以规范化指数形式存放,且小数部分是0.123456(十进制表达),而不是1.23456呢?其中有人这样回答:1.23456要二进制存放需分别存整数部和小数部,而0.123456则只需存小数部,这样在占用相同字节的情况下,后一种方法可容纳更大精度的浮点数.
一种观点:C语言中的“标准化指数形式”和 “规范化的指数形式” 应该是不同的概念,“标准化指数形式”用于在存储,“规范化的指数形式”用于输出。
参考资料: http://blog.csdn.net/hdlover/archive/2009/08/08/4424547.aspx