php中获取数字金额_php 中对金额数值处理

在开发过程中,我们经常需要处理一些金额数值,一般将其格式化为保留两位小数点。 在PHP中,有number_format(), round()这么两个函数可以使用。

最直接的是round()这个函数,其作用是对浮点数进行四舍五入。

round(x, prec), 第一个参数是需要进行四舍五入的数值,第二个参数是要保留的小数点位数,例如round(3.158, 2)的结果是3.16, 这里需要注意的是参数x不能是'12,300.2'这样的字符串。

这里要介绍的另一个函数是number_format(),其作用是对数字进行格式化,注意这里的格式化是千位分组,返回的结果是字符串。

number_format(number, decimals, decimalpoint, separator),第一个参数是需要格式化的数值,后三个参数都为可选,依次是小数位数、用作小数点的字符串、用作千分位的字符串。

第一次使用这个函数来处理金额数值的时候,我是使用的number_format(number, 2),目的是要将数值格式化为带两位小数的,测试结果也是满足我的需要。但是,当number的数值变为5000的时候,就报错了。原因在于number_format(5000, 2)的返回结果是‘5,000.00’,显然是字符串,将数值传递至前端,js,接口获取数据对其进行数学运算的时候就会报错。echo number_format(50007878787,2);//结果:50,007,878,787.00

虽在php中运算不会报错,但是结果也不是我们所需要的;例如:echo number_format(8000, 2) + 2;

//10

echo number_format(8000, 2) * 2;

//16

也就是说'8,000.00'会被当成5来计算,因此我们在使用number_format()的时候需要规避这样的错误,需要对千分位的符号进行规定,也就是传入第4个参数echo number_format(88000, 2, '.', '');

//88000.00

将千分位字符设置为'',这样输出的结果就是我们想得到的5000.00了,虽然其结果实际上还是字符串,但是在进行数学运算的时候既不会报错也不会出现错误的计算结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值