Php - 根据百分比计算数字,如何在 2 个小数位数后降低所有精度?

标签 php

我在 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/

相关文章:

php - 在不同标题下按字母顺序对 mysql 表中的数据进行排序

php - 通过函数将键和值添加到数组中

javascript - 如何验证输入类型 ="text"元素只接受特定内容?

php - 计算关系表行

php - 这是PHP中的错误吗

php - 在 PHP 页面之间传递信息

php - Codeigniter : variables scope when calling a view from within a view. 奇数

php - 拉维尔 : 1066 Not unique table/alias

php - MySQL + PHP : fetching data using foreign keys

javascript - 设置 PHP 数组以使用从 Json 对象创建的下拉列表