Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将价格四舍五入以删除不需要的小数-PHP_Php_Laravel_Rounding - Fatal编程技术网

将价格四舍五入以删除不需要的小数-PHP

将价格四舍五入以删除不需要的小数-PHP,php,laravel,rounding,Php,Laravel,Rounding,我试图对价格进行四舍五入,以去除所有价格总和中不需要的小数。以下是示例屏幕截图 因此,我需要调整价格,以从总数中删除.2小数。我尝试了以下解决方案,但它只适用于一组价格,而不适用于另一组价格 <?php $values = [436.4,207.3,87.3,218.2,196.4,54.6]; $final_array = $val_array = []; $sum = 0; foreach($values as $v){ $sum += roundValue($v

我试图对价格进行四舍五入,以去除所有价格总和中不需要的小数。以下是示例屏幕截图

因此,我需要调整价格,以从总数中删除
.2
小数。我尝试了以下解决方案,但它只适用于一组价格,而不适用于另一组价格

 <?php

$values = [436.4,207.3,87.3,218.2,196.4,54.6];


$final_array = $val_array = []; $sum =  0;

foreach($values as $v){

    $sum += roundValue($v, 5);
    $val_array[] = roundValue($v, 5);
}


function roundValue($number, $denominator = 1)
    {
        $x = $number * $denominator;
        $x = floor($x);
        $x = $x / $denominator;
        return $x;
    }


$final_array[] = ['sum' => $sum, 'rates' => $val_array];

var_dump($final_array);

?>

有什么建议吗?

你现在做的是玩杂耍

注意,
number\u格式
返回字符串。 您正在将该字符串添加到integer(或稍后的float),因此php将该字符串隐式转换为int/float

你想做的(可能)是在浮点/整数上进行计算,最后,当你想显示它时,使用
number\u格式

我建议读一些关于类型的书。

这将是一个良好的开端

对于第二个解决方案,为什么要添加0.01,然后删除它?当然这是你想要的如果我有这样的价格
17.99
,我想这可以通过使用这个公式
轮($number+0.01)-0.01来解决,但现在我意识到这对其他价格没有帮助。刚刚尝试了这个解决方案
https://stackoverflow.com/questions/35129514/round-prices-to-nearest-xx-99
@IsThisJavascript:我也尝试了
round()
,但没有正常工作。这是您要找的还是我遗漏了什么?您正在对总和进行四舍五入,但我需要对值进行四舍五入以获得正确的总和。如果您仍然存在问题-请询问,我将很乐意提供帮助是的,我无法解决此问题,我将这些价格存储在数据库中为
双(8,2)
。我需要对这些价格进行四舍五入,以获得在excel中使用的所需金额。您能分享您当前的代码并描述哪些代码不起作用吗?是的,代码已经存在于我的问题中,这与我现在使用的代码相同。所以问题只是这些数字的格式不是11.22(小数点后两位数字)Excel文档的内部?
round($number + 0.01) - 0.01;
round($number + 0.05) - 0.05;
floor($number*100)/100;