1浮点型小数点后都有6位小数吗?
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/07 01:37:52
1浮点型小数点后都有6位小数吗?
float i=23.56;
printf("%f\n",i);
这个程序输出得23.559999,为什么会这样呢
float i=23.56;
printf("%f\n",i);
这个程序输出得23.559999,为什么会这样呢
![1浮点型小数点后都有6位小数吗?](/uploads/image/z/7187360-32-0.jpg?t=1%E6%B5%AE%E7%82%B9%E5%9E%8B%E5%B0%8F%E6%95%B0%E7%82%B9%E5%90%8E%E9%83%BD%E6%9C%896%E4%BD%8D%E5%B0%8F%E6%95%B0%E5%90%97%3F)
计算机中,浮点形变量是用二进制记录的,而不是十进制
也就是说,在内存中,十进制浮点23.56被记录成了二进制科学计数法2^4*(1.01111000111……)2
(111)2表示二进制数111
由于23.56无法用二进制表示成有限小数,而计算机只可能记录有限的位数,因此记录的时候不可避免会有一定误差
输出的时候,再由二进制转换为十进制,就会出现上面的结果了
至于输出了小数点后6位,这与所输出的数本身的精度无关,纯粹是printf函数在没有指定输出精度的时候默认的
假如你想输出到小数点后3位,可以这样:
printf("%.3f\n",i);
这样就会输出成23.560
也就是说,在内存中,十进制浮点23.56被记录成了二进制科学计数法2^4*(1.01111000111……)2
(111)2表示二进制数111
由于23.56无法用二进制表示成有限小数,而计算机只可能记录有限的位数,因此记录的时候不可避免会有一定误差
输出的时候,再由二进制转换为十进制,就会出现上面的结果了
至于输出了小数点后6位,这与所输出的数本身的精度无关,纯粹是printf函数在没有指定输出精度的时候默认的
假如你想输出到小数点后3位,可以这样:
printf("%.3f\n",i);
这样就会输出成23.560
1浮点型小数点后都有6位小数吗?
double型浮点数能精确到多少位小数
c语言中浮点数四舍五入 .保留一个浮点数小数点后的6位,第3位要四舍五入.如 1.1234.567到1234.57000
在C语言中单精度浮点和双精度浮点小数点后有几位小数
只能输入数字、小数点(小数点后面两位小数)和-1正则表达式
1、一个两位小数,去掉小数点就比原数多1.98,原来这个小数是( ).
C语言中如何用实验的方法确定double型浮点数能精确到多少位小数?
数字0,0,7,6和小数点组成(1)只读一个“零”的一位小数;(2)读两个“零”的两位小数
C语言中用printf()怎么保留3位小数,末位四舍五入输出一个浮点数?
浮点型是四个字节,但是DS18B 20中的定义是2字节的有符号的前六个表示符号位(全0或全1),后四位表示小数
用3、6、0和小数点能组成哪些两位小数
用3,6,0和小数点能组成哪些两位小数?