leo*_*edy 5 php truncate decimal floor
我有一个执行以下计算的算法:
这样它可以用于计算的其余部分:
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截断浮点数
请协助.非常感谢.
更新 - 已解决 好了,现在感谢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>';
}
Run Code Online (Sandbox Code Playgroud)
这里给出的所有答案都是整数。这个功能对我有用,我也希望对你有用。
function truncate($number, $decimals)
{
$point_index = strrpos($number, '.');
return substr($number, 0, $point_index + $decimals+ 1);
}
Run Code Online (Sandbox Code Playgroud)
$number要截断的数字在哪里,是$decimals您想要的小数位数。
示例: truncate(-38.59540719940386 , 6);返回 -38.595407
如果需要,请查看substr的文档!
| 归档时间: |
|
| 查看次数: |
5531 次 |
| 最近记录: |