由于精度的原因,输出%lf和%f的数据不同,可能会造成错误。 主要有一下四点区别: 1、代表的数据类型不同 %f代表单精度浮点型数据(float),%lf代表双精度浮点型数据(double)。 2、有效数字位数不同 单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。 3、所能表示数的范围不同 单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38,双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308 4、在程序中处理速度不同一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。
第6课时 C语言和C++的区别
好好看看数据类型的概念吧,把前面的double换成float后面就可以用%f;%f代表按实型输入或输出,而%lf代表按双精度输入或输出,怎么会没有关系呢?输入时采取的格式不同,存在电脑里的数据就不同,电脑里同样的数据(都是由0和1组成的相同的二进制数)按不同的格式输出结果也不会相同
你之前已经定义到double了,最后的输出值是按照表达式中的最多有效数字的形式定义的,也就是说如果你定义int a;doubule b;但是输出是c=a+b,c则是double型
你定义的double 当然配套的就要用%lf啊 至于%d 和%ld是一样的 并不是你数据不存在就可以不用%lf