C语言关于格式输出
如图,前面两个b输出到小数点后第6位时不应该四舍五入吗,所以为什么是9,对比如下面的·前两个c。还有就是不管float还是double他们的精度是不同的,但输出时都是输出...
如图,前面两个b输出到小数点后第6位时不应该四舍五入吗,所以为什么是9,对比如下面的·前两个c。还有就是不管float还是double他们的精度是不同的,但输出时都是输出小数点后6位吗。对于%e指数形式输出时是小数点前面是6,e之后有符号,算符号4位?是这样吗。十分感谢,辛苦了。
展开
2个回答
展开全部
float 型,精度是 十进制有效数字6到7位。 float b=123.1234567;
只能精确到 123.1234, 为什么是9,你需要把float b=123.1234567; 转化为 2进制数,按 国际标准 IEEE 754 格式 转化 存放,再转化回10进制,按你规定的小数下第几位输出。就是9了。截断误差 与 舍入误差 造成。
double 型,精度是 十进制有效数字14位。double c=12345678.1234567;
按 国际标准 IEEE 754 double 格式 转化 存放, 再转化回10进制,按你规定的小数下第几位输出。同样含 截断误差 与 舍入误差。
%e %f %lf 都是默认格式,输出格式里的 占位,“定点” 有默认位数规定。你要查你的编译器的规定。
只能精确到 123.1234, 为什么是9,你需要把float b=123.1234567; 转化为 2进制数,按 国际标准 IEEE 754 格式 转化 存放,再转化回10进制,按你规定的小数下第几位输出。就是9了。截断误差 与 舍入误差 造成。
double 型,精度是 十进制有效数字14位。double c=12345678.1234567;
按 国际标准 IEEE 754 double 格式 转化 存放, 再转化回10进制,按你规定的小数下第几位输出。同样含 截断误差 与 舍入误差。
%e %f %lf 都是默认格式,输出格式里的 占位,“定点” 有默认位数规定。你要查你的编译器的规定。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询