我正在计算几个数字(sales_total,service_charge)以获得7%的消费税。我得到的是带小数点的数字。
示例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
我需要将数据与
中的报告进行匹配我正在尝试使用php round
,number_format
函数但不能正确地获取我的两个结果。 round
给出示例1结果正确,number_format
给出示例2正确。
我做错了什么,或者我需要使用哪种功能?
答案 0 :(得分:0)
你试过了吗?
round($gst, 2);
这会将你的变量在2个小数的房子里。
你能试试吗?
由于你想要在两个值中都有不同的行为,我不认为这一轮可以在两种情况下帮助你。 实际上第二个例子你甚至不想要一轮。你只想删除第三个十进制数,所以......
在这种情况下,我会使用第一个例子,如我所说的那样,带有2个小数的房子的轮次,在第二个例子中,我只是删除数据库中的第3个房屋号码或限制>表格将浮动数量减去2个小数的房子。
答案 1 :(得分:0)
我相信你可能需要使用精确小数位数从零开始舍入,所以根据你可以使用:
$gst = sprintf("%.2f", round($gst, 3 - strlen(round($gst)), PHP_ROUND_HALF_ODD));
结果:
16.00
2.16
这表示距离零的3位小数的精度减去舍入值的长度。您可能需要使用舍入模式和精度来获得它想要的效果。来自2.15
的{{1}}的结果看起来不正确 - 目前还不清楚你是如何得到这个价值的。
PHP_ROUND_HALF_UP •舍入精确的小数位数,远离零,当它在那里的一半时。使1.5成2 和-1.5到-2。
PHP_ROUND_HALF_DOWN •将val向下舍入到精确小数位,朝向零,当它在那一半时。使1.5成1和 -1.5进-1。
PHP_ROUND_HALF_EVEN •将精确小数位数舍入为下一个偶数值。
PHP_ROUND_HALF_ODD •将val舍入到精确小数位,朝向下一个奇数值。