我有一个执行以下计算的算法:
- ( ( 0.50 * 0 ) + 7 ) / 10 = 0.70
- ( ( 0.70 * 10 ) + 9 ) / 20 = 0.80
- ( ( 0.80 * 20 ) + 7 ) / 30 = 0.7666666667 -> 我希望这个值截断为0.76
这样它就可以作为以下形式输入到其余的计算中:
4a。( ( 0.76 * 30 ) + 8 ) / 40 = 0.77
当四舍五入为0.77时,不要输入小数点后两位:
4b。( ( 0.77 * 30 ) + 8 ) / 40 = 0.77
****以下似乎失败了,而是强制向上取整至 0.77:****
PHP sptrinf() 函数:PHP 舍去小数而不四舍五入
PHP number_format() 函数:PHP:显示数字到小数点后 2 位
PHP floor() 函数:使用 PHP 截断浮点数
- 还有其他方法吗?
- 是否有可能用 PHP 实现我想要的(截断到小数点后两位)?
请协助。非常感谢。
更新 -已解决 好的,感谢 dkamins 和 zneak,它现在可以工作了。我使用了 floor() 方法(我假设我过去没有做正确的事情)。但是,现在发生了以下情况:
例如
(0.86 * 30) + 9) / 40 = 0.87(应该),但在 TRUNC 之后它 = 0.86
它如何将 0.87 截断为 0.86?这没有道理。有没有办法让它仅在小数点后 2 位以上时截断?
解决了:
$numDecPlace = strlen(substr(strrchr($newRel, "."), 1));
echo '<p>Test: Number of decimal places=' .$numDecPlace. '</p>';
if($numDecPlace > 2) {
$newRel = floor($newRel * 100) / 100; // Truncate to 2dp.
echo '<p>Test: New relationship truncated is $newRel=' .$newRel. '</p>';
}