0

每天我们需要根据投资金额和资产净值这两个变量来计算分配的单位数量。我们现在在 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";
?>

结果:19200410.1203

结果应包含小数点后 4 位,并且不应四舍五入。

提前致谢。

4

2 回答 2

1

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

从你的例子中只是做:

floor($var3 * 10000) / 10000

给了我正确的结果,应该可以正常工作。

于 2013-06-03T17:44:02.897 回答
1

使用圆形- 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;
于 2013-06-03T17:36:23.810 回答