main() {float f=123.456,d=12.67; printf("%f,%10.1f,%.2f",f,f,f); printf("%e,%9.1e,%.3e",d,d,d); }上面的程序答案里写的输出的是123.456001, 123.5,123.46 1.26700e+01, 1e+01,1.27e+01.那个123.456001的不是应该是123.456000,
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 12:22:15
![main() {float f=123.456,d=12.67; printf(](/uploads/image/z/3689968-40-8.jpg?t=main%28%29+%7Bfloat+f%3D123.456%2Cd%3D12.67%3B+printf%28%22%25f%2C%2510.1f%2C%25.2f%22%2Cf%2Cf%2Cf%29%3B+printf%28%22%25e%2C%259.1e%2C%25.3e%22%2Cd%2Cd%2Cd%29%3B+%7D%E4%B8%8A%E9%9D%A2%E7%9A%84%E7%A8%8B%E5%BA%8F%E7%AD%94%E6%A1%88%E9%87%8C%E5%86%99%E7%9A%84%E8%BE%93%E5%87%BA%E7%9A%84%E6%98%AF123.456001%2C++++123.5%2C123.46+++++1.26700e%2B01%2C++++++1e%2B01%2C1.27e%2B01.%E9%82%A3%E4%B8%AA123.456001%E7%9A%84%E4%B8%8D%E6%98%AF%E5%BA%94%E8%AF%A5%E6%98%AF123.456000%2C)
main() {float f=123.456,d=12.67; printf("%f,%10.1f,%.2f",f,f,f); printf("%e,%9.1e,%.3e",d,d,d); }上面的程序答案里写的输出的是123.456001, 123.5,123.46 1.26700e+01, 1e+01,1.27e+01.那个123.456001的不是应该是123.456000,
main() {float f=123.456,d=12.67; printf("%f,%10.1f,%.2f",f,f,f); printf("%e,%9.1e,%.3e",d,d,d); }
上面的程序答案里写的输出的是123.456001, 123.5,123.46
1.26700e+01, 1e+01,1.27e+01.那个123.456001的不是应该是123.456000,那个1是哪来的,还有之后的%e的输出看不懂,那个e+01是什么东西,求解释.
main() {float f=123.456,d=12.67; printf("%f,%10.1f,%.2f",f,f,f); printf("%e,%9.1e,%.3e",d,d,d); }上面的程序答案里写的输出的是123.456001, 123.5,123.46 1.26700e+01, 1e+01,1.27e+01.那个123.456001的不是应该是123.456000,
1.f=123.456,当采用%f格式输出时,小数点后要保持6位,由于float类型的精度问题,输出结果中往往由123.456000变成123.456001,这个1属于随机误差部分,精度造成的,如果f是double类型,输出就不会有这个问题了,可测试一下看.
2.%e格式输出,表示使用科学计数法,e+01,代表是10的1次方