我在 php 脚本中计算价格时遇到问题。
经过多次争论,我意识到我的困境的原因在于 php 的实际工作方式。由于大多数人很可能都知道这一点,因此我认为我应该指出这一点,并为尚未意识到这一点的人节省时间。
Php 在乘法过程中将产生有限结果。如 1.246256343 所示。现在我注意到,商店使用的销售点系统(非基于 php 的)似乎会删除小数点后两位后的任何数字,无论其舍入潜力如何。 1.246 的计算结果是 1.24,而不是人们自然认为的 1.25。
话虽如此,我正在寻找一种在使用 php 进行此计算时产生这种效果的方法。我已经涉足 round()
有一段时间了,但担心这首先是问题的根源,因为如果在这种情况下使用它会将 1.246 舍入到 1.25:
$prCalcPrice = round($prPrice / 1.02, 2);
或者这个
$prCalcPrice = round($prPrice / 1.02, 2, PHP_ROUND_HALF_DOWN);
现在我需要一种方法来输出结果,排除两位小数后的任何数字值,因此本质上 1.246 的结果将产生值 1.24,而不是 1.25。
有人对此有什么想法或建议吗?
此外,如果这过去对您来说是个问题,并且您以教程或其他页面的形式找到了任何有用的信息,请发布它们!
最佳答案
使用floor
函数与乘法和除法 10^2 相结合(因为您想要以两位小数的精度舍入):
$roundedPrice = floor($price * 100) / 100;
关于Php - 根据百分比计算数字,如何在 2 个小数位数后降低所有精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7826910/