金额计算元转成分格式转化
5.10元 转成 510分,使用下面3种方法:
ceil(5.10 * 100); // 结果 510
number_format(5.10 * 100, 0, '.', ''); // 结果 510
sprintf('%0.f',5.10 * 100); // 结果 510
上面金额都是四舍五入的,若转化 5.115元 最终的结果都是 512分 (最后的5厘四舍五入,但正常来说现在不会以厘来计算金额所以采用进位的转化格式是比较正常的)
floor(5.10 * 100); //结果 509 少了1分
intval(5.10 * 100); //结果 509 少了1分
退位的格式转化容易出现上面的问题
看到这里,可能会想,金额计算为什么还要包个格式进行转化呢,因为金额的类型基本上是浮点类型,在计算的过程中容易造成精度丢失的问题,所以需要格式转化
网友评论