论坛: 编程破解 标题: C++问题 复制本贴地址    
作者: michaelpig [michaelpig]    论坛用户   登录

在C++中若用
cout<<float;
将输出浮点数float的所有位,若要将其精确到某一位要怎样?
譬如精确到小数点后两位,若用C为
printf("%.2f",float);
不要告诉我在C++中用printf喔,我想用C++的。


地主 发表时间: 04/29 22:25

回复: ricky [ricky]   版主   登录
printf没有什么不好啊

B1层 发表时间: 04/30 09:48

回复: root_bug [root_bug]   论坛用户   登录
老大,告诉你吧!其实很简单的,C++不可能没有精度控制的功能啊!呵!
格式: cout <<setprecision(n)<<amount;
其中,n为浮点位数!
以后多看点书,呵,还有其他的一些参数控制,如对齐方式,域宽度,你看书吧。
不要听下面那位老兄的,printf要是没有鄙端,C++也不会引入Cout了。
既然引入了,Cout就什么地方都比printf强了。

B2层 发表时间: 05/01 17:22

回复: signal [signal]   论坛用户   登录
话不是这么说,没有printf的弊端,估计格式化字符串HACK技术可能就要推迟不知到什么时候呵呵。
言归正传,标准C中目前还不能用cont,不用printf会很麻烦。起码你要增加代码量。

B3层 发表时间: 05/01 19:24

回复: root_bug [root_bug]   论坛用户   登录
上面这位老兄,我倒是想不到哪些地方Cout会比printf差的啊!搞程序的都应该知道,printf的弊端其实很多的。

B4层 发表时间: 05/01 19:58

回复: wineggdrop [wineggdrop]   论坛用户   登录
楼上的你可以说说printf有什么坏处,我可不知道printf有什么是比不是cout的,cout可以做到的,printf都可以做到。cout只不过在printf的基础上扩展的一些参数输出,如果你能列出一些例子cout可以做到,但printf是做不到的,那才能说明cout的优越,否则的话,根本就不存在什么cout比printf优胜的地方。

B5层 发表时间: 05/02 05:35

回复: root_bug [root_bug]   论坛用户   登录
楼上的老兄,printf的缺陷:
1.非类型安全
    主要在编译过程中。函数原型使编译系统对它进行必要的类型检查,免除了许多错误。但对于printf(),它却毫无帮助。编译器无法检查对printf()的调用的正确性。
例如,下面这个函数企图输入异于格式符的数据:
#include <stdio.h>
int j=10;
float f=2.3;

void fn()
{
  printf("%d",f);
  printf("%d","abcde");
}
在int型占两个字节的情况下,语句printf("%d",f);只输出f变量中前2个字节的内容,并按int型数据格式进行解释;
语句printf("%d","abcde");输出"abcd"的地址值,而不是想要的字串。
上面的语句,用错了数据类型,而编译都能通过。为此,程序员将花更多的代价在程序运行中出现的错误上诊断。特别以于scanf()中的错误,往往是致命的。

2.不可扩充性。
printf()知道如何输入已知的基本数据类型值,但是,C++程序中(如果你只想用低效的C来写程序就另当别论)大量的类对像,其输入输出格式是未预先定义的,这就希望输入输出语句能够更加灵活与可扩充。printf()和scanf()却无能为力,它们即不能识别,也不能学会如何识别用户定义的对像。这一点,我相信比上一个缺性更有说服性,就不用给例子了。

我坚信,Cout、Cin比printf()和scanf()绝对要强!


B6层 发表时间: 05/02 23:34

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号