Excel舍入功能相当于php

时间:2013-06-03 17:30:33

标签: php

我们每天都需要根据投资金额和资产净值这两个变量来计算分配的单位数。我们现在在Excel中使用舍入功能,我试图在PHP中实现,但它有时会将结果四舍五入。

In Excel:
Cell A1 = 287011570.56
Cell B1 = 14.9482
Cell C1 = =ROUNDDOWN(A1/ROUND(B1,4),4)
       = 19200410.1202

In PHP:
<?php
$var1=287011570.56;
$var2=14.9482;
$var3=$var1/$var2;
$var4 = floor(($var3) * 100000 + .5) * .00001;
$var5 = intval($var4);
$var6 = strlen($var5)+5;
$test = substr("$var4", 0, $var6);
print "$test";
?>

结果:1​​9200410.1203

结果应该包含小数点后的4位数字,它不应该对结果进行舍入。

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用Round - float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )

您需要将PHP_ROUND_HALF_DOWN作为第三个参数(模式)传递。

round($value, 4, PHP_ROUND_HALF_DOWN);

如果您的PHP版本中没有mode参数(因为它对我不起作用),请使用:

floor($value * 10000) / 10000;

答案 1 :(得分:1)

使用floor()时,您不需要添加0.5。这可以将值移动到您在进行除法时不需要的下一个最高值。

从你的例子开始:

floor($var3 * 10000) / 10000

给我正确的结果并且应该正常工作。