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 相关文章推荐
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
如何实现php图片等比例缩放
Jul 28 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
Windows服务器中PHP如何安装redis扩展
Sep 27 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通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
JavaScript 继承详解(二)
2009/07/13 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
python实现数通设备端口监控示例
2014/04/02 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python按比例随机切分数据的实现
2019/07/11 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
Django实现随机图形验证码的示例
2020/10/15 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
一个大学生十年的职业规划
2014/01/17 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
课外活动总结范文
2014/07/09 职场文书
个人安全生产责任书
2014/07/28 职场文书
平安家庭事迹材料
2014/12/20 职场文书
优秀班组事迹材料
2014/12/24 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript