C++中对浮点数的格式化显示
在str中原来为"123.4567",在插入\0常量之后,它变成了"123.45\07",为把str缩减为"123.45",一般可使用自交换的方法:
str.swap(string(str.c_str()) );//删除nul之后的多余字符 那它的原理是什么呢?函数string::c_str()返回一个const char *代表此字符串对象,而这个值被用作一个临时string对象的初始化值,接着,临时对象又被用作str.swap()的参数,swap()会把值"123.45"赋给str。一些老一点的编译器不支持默认模板参数,可能不会让swap()通过编译,如果是这样的话,使用手工交换来代替:
代码虽不是很"优美",但能达到目的就行。以下是do_fraction()的完整代码:
如果不想通过传值返回一个string对象,还可增加一个参数,把str对象以引用传递: void do_fraction(long double value, string & str, int decplaces=3); 从个人的角度来讲,还是倾向于让编译器做这样的优化,另外,使用传值返回,还可以让你以下面这种方式使用do_fraction(): cout << funct(123456789.69999001) << ''\t'' << funct(12.011)<<endl; 输出: 123456789.69 12.01 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |