PHP浮点数与小数点四舍五入



我正在计算几个数字(sales_total, service_charge)以获得7%的GST。我得到的是带小数点的数。

示例1:

$sales_total        = 207.50;
$service_charge = 20.75;
$gst                = ($sales + $sc) * .07;

返回GST = 15.9775

示例2:

$sales_total        = 28;
$service_charge = 2.8;
$gst                =  ($sales + $sc) * .07;

返回GST = 2.156

我需要将数据与报告相匹配,其中

  • 例1 GST = 16.00 (my 15.9775)
  • 例2 GST = 2.15 (my 2.156)

我正在尝试php round, number_format功能,但没有得到我的两个结果正确。round给出了例1的正确结果,number_format给出了例2的正确结果。

我做错了什么,或者我需要使用哪个函数?

我相信您可能需要在小数点后零处进行精确舍入,因此您可以使用:

$gst = sprintf("%.2f", round($gst, 3 - strlen(round($gst)), PHP_ROUND_HALF_ODD));
结果:

16.00
2.16

显示距离0的3位小数的精度减去舍入值的长度。您可能需要使用舍入模式和精度来获得您想要的效果。2.1562.15的结果看起来不正确-不清楚您是如何得到这个值的。

  • PHP_ROUND_HALF_UP•当val位于零的一半时,将其四舍五入到距离零的精确小数点后几位。把1.5变成2

  • PHP_ROUND_HALF_DOWN•当val到达一半位置时,将其舍入到接近零的精确小数点后位数。把1.5变成1和

  • PHP_ROUND_HALF_EVEN•向下一个偶值四舍五入到精确的小数点后位数

  • PHP_ROUND_HALF_ODD•将值四舍五入到下一个奇数位。

参考:http://php.net/manual/en/function.round.php

你试过了吗:

round($gst, 2);

这将把变量四舍五入到小数点后两位。

你能试试吗?

编辑

因为你想在两个值中有不同的行为,我不认为这一轮可以在两种情况下都帮助你。实际上第二个例子你甚至不需要一轮。你只需要删除第三位小数。

在这种情况下,我将使用第一个例子,如我所说的具有2位小数的整数,在第二个例子中,我将删除第三个门牌号或将数据库>表中的浮点数限制为2位小数。

相关内容

  • 没有找到相关文章