关于C++的输入输出格式%f和%lf的区别

原文:dalao博客

之所以写这个,是因为在POJ上用% l f lf lf会爆炸…

首先,说明下, C + + C++ C++将实数分为单精度和高精度这些花里胡哨的东西…
p r i n t f printf printf %f 说明符的确既可以输出 f l o a t float float型又可以输出 d o u b l e double double型。
根据一种“默认参数提升”的睿智东西, f l o a t float float型在% f f f输出时,会被提升为 d o u b l e double double型。因此使用 p r i n t f printf printf只会看到双精度数。
但作为 p r i n t f printf printf的孪生兄弟 s c a n f scanf scanf,情况就完全不同了,它接受指针,可这里没有类似的类型提升。向 f l o a t float float存储和向 d o u b l e double double存储大不一样。也就是不会出现提升的骚操作。因此, s c a n f scanf scanf是要区别% f f f和% l f lf lf

#最后,讲一下总结出来的东西:
不管你三七二十一,只要用 p r i n t f printf printf输出实数,直接用%ff就好了。而当你用 s c a n f scanf scanf读入实数,就不得不把% f f f% l f lf lf分好了

你可能感兴趣的:(小工具,C++实数,%lf,%f,scanf,printf)