在PHP中,当格式化输出浮点数时遇到的问题 看来这里没有人关心此类问题呀... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在首册里说得明白,格式化的时候是直接截取的,不过你取得情况已经很全,看来应该是函数内部算法的问题,不清楚了 今天在 UNIX 平台上测试了一下,结果却是这样的,函数 number_format() 的测试结果与windows2000平台的测试结果不同,函数 sprintf() 的测试结果与windows2000平台的测试结果相同.<?php//函数 number_format() 的测试echo number_format(0.885,2,'.','')."<br />"; // 0.89 ok!(UNIX)echo number_format(0.895,2,'.','')."<br />"; // 0.90 ok!(UNIX)echo number_format(0.985,2,'.','')."<br />"; // 0.98 error!(UNIX)echo number_format(0.995,2,'.','')."<br />"; // 0.99 error!(UNIX)echo number_format(0.885001,2,'.','')."<br />"; // 0.89 ok!echo number_format(0.895001,2,'.','')."<br />"; // 0.90 ok!echo number_format(0.985001,2,'.','')."<br />"; // 0.99 ok!echo number_format(0.995001,2,'.','')."<br />"; // 1.00 ok!echo number_format(0.9885,3,'.','')."<br />"; // 0.989 ok!(UNIX)echo number_format(0.9895,3,'.','')."<br />"; // 0.990 ok!(UNIX)echo number_format(0.988501,3,'.','')."<br />"; // 0.989 ok!echo number_format(0.989501,3,'.','')."<br />"; // 0.990 ok!echo number_format(0.99895,4,'.','')."<br />"; // 0.9990 ok!(UNIX)echo number_format(0.99985,4,'.','')."<br />"; // 0.9999 ok!(UNIX)echo number_format(0.99995,4,'.','')."<br />"; // 1.0000 ok!(UNIX)echo number_format(0.9989501,4,'.','')."<br />"; // 0.9990 ok!echo number_format(0.9998501,4,'.','')."<br />"; // 0.9999 ok!echo number_format(0.9999501,4,'.','')."<br />"; // 1.0000 ok!echo number_format(0.9999885,6,'.','')."<br />"; // 0.999988 error!(UNIX)echo number_format(0.999988501,6,'.','')."<br />"; // 0.999989 ok!//函数 sprintf() 的测试echo sprintf("%01.2f",0.885)."<br />"; // 0.88 error!(UNIX)echo sprintf("%01.2f",0.895)."<br />"; // 0.89 error!(UNIX)echo sprintf("%01.2f",0.985)."<br />"; // 0.98 error!(UNIX)echo sprintf("%01.2f",0.995)."<br />"; // 0.99 error!(UNIX)echo sprintf("%01.2f",0.885001)."<br />"; // 0.89 ok!echo sprintf("%01.2f",0.895001)."<br />"; // 0.90 ok!echo sprintf("%01.2f",0.985001)."<br />"; // 0.99 ok!echo sprintf("%01.2f",0.995001)."<br />"; // 1.00 ok!echo sprintf("%01.3f",0.9885)."<br />"; // 0.988 error!(UNIX)echo sprintf("%01.3f",0.9895)."<br />"; // 0.989 error!(UNIX)echo sprintf("%01.3f",0.988501)."<br />"; // 0.989 ok!echo sprintf("%01.3f",0.989501)."<br />"; // 0.990 ok!echo sprintf("%01.4f",0.99895)."<br />"; // 0.9989 error!(UNIX)echo sprintf("%01.4f",0.99985)."<br />"; // 0.9998 error!(UNIX)echo sprintf("%01.4f",0.99995)."<br />"; // 0.9999 error!(UNIX)echo sprintf("%01.4f",0.9989501)."<br />"; // 0.9990 ok!echo sprintf("%01.4f",0.9998501)."<br />"; // 0.9999 ok!echo sprintf("%01.4f",0.9999501)."<br />"; // 1.0000 ok!echo sprintf("%01.6f",0.9999885)."<br />"; // 0.999988 error!(UNIX)echo sprintf("%01.6f",0.999988501)."<br />"; // 0.999989 ok!?> 问个ubuntu里头cron问题 新手求救,有关数字替换问题,急!急!急! TPL里面的循环嵌套选择 应该怎么写? 无法上传视频 程序中的接口是什么概念啊??? 跪求删除编号的正则表达式 Linux 下执行php脚本 在同一个站点里使用多模板,问如何设等模板目录? 关于邮件问题,请赐教? 翻页算法? 是谁给结的贴呀... 防止刷新重复提交的两种方法
windows2000平台的测试结果不同,函数 sprintf() 的测试结果与windows2000平台的测试
结果相同.<?php//函数 number_format() 的测试
echo number_format(0.885,2,'.','')."<br />"; // 0.89 ok!(UNIX)
echo number_format(0.895,2,'.','')."<br />"; // 0.90 ok!(UNIX)
echo number_format(0.985,2,'.','')."<br />"; // 0.98 error!(UNIX)
echo number_format(0.995,2,'.','')."<br />"; // 0.99 error!(UNIX)
echo number_format(0.885001,2,'.','')."<br />"; // 0.89 ok!
echo number_format(0.895001,2,'.','')."<br />"; // 0.90 ok!
echo number_format(0.985001,2,'.','')."<br />"; // 0.99 ok!
echo number_format(0.995001,2,'.','')."<br />"; // 1.00 ok!
echo number_format(0.9885,3,'.','')."<br />"; // 0.989 ok!(UNIX)
echo number_format(0.9895,3,'.','')."<br />"; // 0.990 ok!(UNIX)
echo number_format(0.988501,3,'.','')."<br />"; // 0.989 ok!
echo number_format(0.989501,3,'.','')."<br />"; // 0.990 ok!
echo number_format(0.99895,4,'.','')."<br />"; // 0.9990 ok!(UNIX)
echo number_format(0.99985,4,'.','')."<br />"; // 0.9999 ok!(UNIX)
echo number_format(0.99995,4,'.','')."<br />"; // 1.0000 ok!(UNIX)
echo number_format(0.9989501,4,'.','')."<br />"; // 0.9990 ok!
echo number_format(0.9998501,4,'.','')."<br />"; // 0.9999 ok!
echo number_format(0.9999501,4,'.','')."<br />"; // 1.0000 ok!
echo number_format(0.9999885,6,'.','')."<br />"; // 0.999988 error!(UNIX)
echo number_format(0.999988501,6,'.','')."<br />"; // 0.999989 ok!//函数 sprintf() 的测试
echo sprintf("%01.2f",0.885)."<br />"; // 0.88 error!(UNIX)
echo sprintf("%01.2f",0.895)."<br />"; // 0.89 error!(UNIX)
echo sprintf("%01.2f",0.985)."<br />"; // 0.98 error!(UNIX)
echo sprintf("%01.2f",0.995)."<br />"; // 0.99 error!(UNIX)
echo sprintf("%01.2f",0.885001)."<br />"; // 0.89 ok!
echo sprintf("%01.2f",0.895001)."<br />"; // 0.90 ok!
echo sprintf("%01.2f",0.985001)."<br />"; // 0.99 ok!
echo sprintf("%01.2f",0.995001)."<br />"; // 1.00 ok!
echo sprintf("%01.3f",0.9885)."<br />"; // 0.988 error!(UNIX)
echo sprintf("%01.3f",0.9895)."<br />"; // 0.989 error!(UNIX)
echo sprintf("%01.3f",0.988501)."<br />"; // 0.989 ok!
echo sprintf("%01.3f",0.989501)."<br />"; // 0.990 ok!
echo sprintf("%01.4f",0.99895)."<br />"; // 0.9989 error!(UNIX)
echo sprintf("%01.4f",0.99985)."<br />"; // 0.9998 error!(UNIX)
echo sprintf("%01.4f",0.99995)."<br />"; // 0.9999 error!(UNIX)
echo sprintf("%01.4f",0.9989501)."<br />"; // 0.9990 ok!
echo sprintf("%01.4f",0.9998501)."<br />"; // 0.9999 ok!
echo sprintf("%01.4f",0.9999501)."<br />"; // 1.0000 ok!
echo sprintf("%01.6f",0.9999885)."<br />"; // 0.999988 error!(UNIX)
echo sprintf("%01.6f",0.999988501)."<br />"; // 0.999989 ok!
?>