Karp 的技术博客

精度处理 函数 进位/取整方法

<?php
/**
 * File Name: test.php
 * Author: len
 * Mail: i@91coder.org
 * Created Time: Wed Sep 18 14:48:47 2019
 */

function priceTool($price, $pricePrecision, $isCarry = false)
{
    list($int, $float) = explode('.', $price);

    if (!$isCarry) return bcadd($price, 0, $pricePrecision);

    $float = rtrim($float, '0');
    if (!$float) {
        return bcadd($price, 0, $pricePrecision);
    }

    $len = $pricePrecision - strlen($float);
    if ($len < 0) {
        $float = '1' . substr($float, 0, $pricePrecision);
        $float = substr(strval(++$float), 1, $pricePrecision);
    } else {
        $float = $float . str_repeat('0', $len);
    }

    return implode('.', [$int, $float]);
}

echo priceTool('20.123', 2, true), PHP_EOL;

亲测有效 , 方法不是最优 还请见谅

php

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2019年09月18日 08:36
1

目录

来自 《PHP 精度进位方法》
774 文章数
0 评论量
9 分类数
779 页面数
已在风雨中度过 9年277天3小时44分