本文已参与【新人创作礼】活动 ,一起开启掘金创作之路
# 1 round 函数
round() 函数对浮点数进行四舍五入 PHP round 函数 | 菜鸟教程
语法 round(number,precision,mode);
| 参数 | 描述 |
|---|---|
| number | 必需 规定要舍入的值 |
| precision | 可选 规定小数点后的尾数 默认是0,也可以为负数 |
| mode | 可选。规定表示舍入模式的常量: |
| - PHP_ROUND_HALF_UP - | 默认。遇到 .5 的情况时向上舍入 number 到 precision 小数位。舍入 1.5 到 2,舍入 -1.5 到 -2。 |
| - PHP_ROUND_HALF_DOWN - | 遇到 .5 的情况时向下舍入 number 到 precision 小数位。舍入 1.5 到 1,舍入 -1.5 到 -1。 |
| - PHP_ROUND_HALF_DOWN - | 遇到 .5 的情况时向下舍入 number 到 precision 小数位。舍入 1.5 到 1,舍入 -1.5 到 -1。 |
| - PHP_ROUND_HALF_ODD - | 遇到 .5 的情况时取下一个奇数值舍入 number 到 precision 小数位。 |
# 所有的round函数作用的数字 最终的结果都跟符号无关(不管是正数还是负数)
# 1 纯正数小数形式
var_dump(round(0.88)); # 输出结果 float(1) 作用类似于 var_dump(ceil(0.88)) # 输出结果float(1)
var_dump(round(0.38)); # 输出结果 float(0) 作用类似于 var_dump(floor(0.38)) # 输出结果float(0)
# 2 纯负数小数形式
var_dump(round(-0.88)); # 输出结果 float(-1) 作用类似于 var_dump(floor(-0.88)) # float(-1)
var_dump(round(-0.38)); # 输出结果 float(-0) 作用类似于 var_dump(ceil(-0.38)) # float(-0)
# 3 带整数的正数小数形式
var_dump((round(8.88)); # 输出结果 float(9)
var_dump((round(8.38)); # 输出结果 float(8)
# 4 带整数的负数小数形式
var_dump(round(-8.88)); # 输出结果 float(-9)
var_dump(round(-8.38)); # 输出结果 float(-8)
# 1 2 3 4 这四种情况表示不保留小数位 但是还是满足四舍五入的情况
# round($num) 与 round($num,0) 这两种形式作用的结果一致 只是写法不一致
# 5数字保留两位小数(保留两位以上小数跟保留两位小数、保留一位小数类似)
# 5
var_dump(round(3.1415926,2)); # float(3.14)
var_dump(round(-3.1415926,2)); # float(-3.14)
# 6特殊情况(满足四舍五入)
# 6
var_dump(round(31415926,-3)); # float(31416000) 从个位数开始往上计数 遇到数字9向高位进1
var_dump(round(31415926,3)); # float(31415926) 没有小数位 保持不变
# 7使用常量参数对数字进行四舍五入:
# 7
var_dump(round(9.7, 0, PHP_ROUND_HALF_UP)); # float(10) 作用类似于 var_dump(ceil(9.7)) # float(10)
var_dump(round(9.1, 0, PHP_ROUND_HALF_DOWN)); # float(9) 作用类似于 var_dump(floor(9.1)) # float(9)
var_dump(round(9.7, 0, PHP_ROUND_HALF_EVEN)); # float(10)
var_dump(round(9.1, 0, PHP_ROUND_HALF_ODD)); # float(9)
var_dump(round(8.8, 0, PHP_ROUND_HALF_EVEN)); # float(8)
var_dump(round(8.1, 0, PHP_ROUND_HALF_ODD)); # float(9)
# 2 number_format 函数
number_format() 函数通过千位分组来格式化数字 PHP number_format函数 | 菜鸟教程
语法 number_format(number,decimals,decimalpoint,separator)
| 参数 | 描述 |
|---|---|
| number | 必需。要格式化的数字。如果未设置其他参数,则数字会被格式化为不带小数点且以逗号(,)作为千位分隔符。 |
| decimals | 可选。规定多少个小数。如果设置了该参数,则使用点号(.)作为小数点来格式化数字。 |
| decimalpoint | 可选。规定用作小数点的字符串。 |
| separator | 可选。规定用作千位分隔符的字符串。仅使用该参数的第一个字符。比如 "xxx" 仅输出 "x"。 注释: 如果设置了该参数,那么所有其他参数都是必需的。 |
# 1 number_format($num) 格式化数字 默认用千位分隔符','将$num参数进行分隔
var_dump(number_format("88888888")); # string(10) "88,888,888"
# 2 number_format($num,2) 格式化数字 默认用千位分隔符','将$num参数进行分隔并且保留两位小数 没有小数位保留几位小数就在小数点后面补几个零
var_dump(number_format("88888888",2));# string(13) "88,888,888.00"
# 3 number_format($num,2,',','.') 格式化数字 用给出的千位分隔符'.'将$num参数进行分隔并且保留两位小数 小数点被替换成','
var_dump(number_format("88888888",2,",","."));# string(13) "88.888.888,00"
# 4 英文符号 默认
var_dump(number_format("314159.26")); # string(7) "314,159"
# 5 法语符号
var_dump(number_format("314159.26" , 2 , ',' , ' ' )); # string(10) "314 159,26"
# 6 会四舍五入
var_dump(number_format('31415.926',2,'.','')); # string(8) "31415.93"
# 3 sprintf 函数
sprintf() 函数把格式化的字符串写入一个变量中。PHP sprintf 函数 | 菜鸟教程
语法 sprintf(format,arg1,arg2,arg++ )
| 参数 | 描述 |
|---|---|
| format | 必需。规定字符串以及如何格式化其中的变量。可能的格式值:- %% - 返回一个百分号 %- %b - 二进制数- %c - ASCII 值对应的字符- %d - 包含正负号的十进制数(负数、0、正数)- %e - 使用小写的科学计数法(例如 1.2e+2)- %E - 使用大写的科学计数法(例如 1.2E+2)- %u - 不包含正负号的十进制数(大于等于 0)- %f - 浮点数(本地设置)- %F - 浮点数(非本地设置)- %g - 较短的 %e 和 %f- %G - 较短的 %E 和 %f- %o - 八进制数- %s - 字符串- %x - 十六进制数(小写字母)- %X - 十六进制数(大写字母)附加的格式值。必需放置在 % 和字母之间(例如 %.2f):- + (在数字前面加上 + 或 - 来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记)- ' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%'x20s(使用 "x" 作为填充))- - (左调整变量值)- [0-9] (规定变量值的最小宽度)- .[0-9] (规定小数位数或最大字符串长度)注释: 如果使用多个上述的格式值,它们必须按照上面的顺序进行使用,不能打乱。 |
| arg1 | 必需。规定插到 format 字符串中第一个 % 符号处的参数。 |
| arg2 | 可选。规定插到 format 字符串中第二个 % 符号处的参数。 |
| arg++ | 可选。规定插到 format 字符串中第三、四等等 % 符号处的参数 |
# 1 sprintf函数 保留两位小数
var_dump(sprintf("%.2f", '31415.926')); # string(8) "31415.93"
# 2 保留2为小数没有四舍五入,sprintf的特性会四舍五入小数后多保留了一位,然后用substr来截取前2位
var_dump(substr(sprintf("%.3f",'31415.926'),0,-1)); # string(8) "31415.92"
# 4 php自定义保留几位小数方法
/**
* @title 自定义保留几位小数方法
* @param $value
* @param $num # 默认保留两位小数
* @return string
*/
function format_number($value,$num=2){
$array = explode('.',$value);
$res = $array[0].'.'.substr($array[1],0,$num);
return $res;
}
var_dump(format_number(3.1415926)); # string '3.14' (length=4)