将价格四舍五入以删除不需要的小数-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;