gpt4 book ai didi

php - 如何在 PHP 中对 bcmath 数字进行舍入/上限/下限?

转载 作者:可可西里 更新时间:2023-10-31 22:42:27 29 4
gpt4 key购买 nike

是否有用于此目的的任何库函数,所以我不会手动执行并冒以 TDWTF 结尾的风险?

echo ceil(31497230840470473074370324734723042.6);

// Expected result
31497230840470473074370324734723043

// Prints
<garbage>

最佳答案

更新:在这里查看我改进的答案:How to ceil, floor and round bcmath numbers? .


这些功能似乎更有意义,至少对我而言:

function bcceil($number)
{
if ($number[0] != '-')
{
return bcadd($number, 1, 0);
}

return bcsub($number, 0, 0);
}

function bcfloor($number)
{
if ($number[0] != '-')
{
return bcadd($number, 0, 0);
}

return bcsub($number, 1, 0);
}

function bcround($number, $precision = 0)
{
if ($number[0] != '-')
{
return bcadd($number, '0.' . str_repeat('0', $precision) . '5', $precision);
}

return bcsub($number, '0.' . str_repeat('0', $precision) . '5', $precision);
}

它们支持负数和 bcround() 函数的精度参数。

一些测试:

assert(bcceil('4.3') == ceil('4.3')); // true
assert(bcceil('9.999') == ceil('9.999')); // true
assert(bcceil('-3.14') == ceil('-3.14')); // true

assert(bcfloor('4.3') == floor('4.3')); // true
assert(bcfloor('9.999') == floor('9.999')); // true
assert(bcfloor('-3.14') == floor('-3.14')); // true

assert(bcround('3.4', 0) == number_format('3.4', 0)); // true
assert(bcround('3.5', 0) == number_format('3.5', 0)); // true
assert(bcround('3.6', 0) == number_format('3.6', 0)); // true
assert(bcround('1.95583', 2) == number_format('1.95583', 2)); // true
assert(bcround('5.045', 2) == number_format('5.045', 2)); // true
assert(bcround('5.055', 2) == number_format('5.055', 2)); // true
assert(bcround('9.999', 2) == number_format('9.999', 2)); // true

关于php - 如何在 PHP 中对 bcmath 数字进行舍入/上限/下限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231057/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com