php的sprintf函数的用法 控制浮点数格式


Posted in PHP onFebruary 14, 2014

控制浮点数打印格式

浮点数的打印和格式控制是sprintf 的一大常用功能,浮点数使用格式符”%f”控制,默认保留小数点后6 位数字,比如:

sprintf("%f", 3.1415926); //结果:"3.141593"

但,有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m 表示打印数字的整体宽度,n 表示小数点后的位数。比如:

sprintf(" %9.3f", 3.1415926); //右对齐:位数不够用空格补全。结果:"    3.142"
sprintf(" %-9.3f", 3.1415926); //左对齐:位数不够用空格补全。结果:"3.142    "
sprintf(" %.3f", 3.1415926); //不指定总宽度,结果:"3.142"

注意一个问题

$num = 100;
sprintf("%.2f", $num );
sprintf("%.2f", (double)$num);

上面的两个结果真的一样吗?虽然看起来是一样的,但是下面的原因,可能会有所启发.
原因是:参数压栈时调用者并不知道跟num相对应的格式控制符是个”%f”。而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数$num的那4个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。
PHP 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
模仿OSO的论坛(一)
Oct 09 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
php中spl_autoload详解
Oct 17 PHP
PHP关联数组实现根据元素值删除元素的方法
Jun 26 PHP
thinkPHP查询方式小结
Jan 09 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
PHP链表操作简单示例
Oct 15 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 #PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 #PHP
PHP COOKIE及时生效的方法介绍
Feb 14 #PHP
php递归使用示例(php递归函数)
Feb 14 #PHP
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 #PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 #PHP
php中simplexml_load_string使用实例分享
Feb 13 #PHP
You might like
用php过滤危险html代码的函数
2008/07/22 PHP
yii框架源码分析之创建controller代码
2011/06/28 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
jQuery each()方法的使用方法
2010/03/18 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
python实现排序算法解析
2018/09/08 Python
Python 在局部变量域中执行代码
2020/08/07 Python
深入分析python 排序
2020/08/24 Python
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
网上签名寄语活动留言
2014/01/18 职场文书
投标服务承诺书
2014/05/28 职场文书
测控技术自荐信
2014/06/05 职场文书
元旦晚会活动总结
2014/07/09 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
护士先进个人总结
2015/02/13 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
python中print格式化输出的问题
2021/04/16 Python