有可能减少浮动值..?

时间:2018-01-21 01:26:14

标签: php mysql ajax

$quantity = 20;
$product_rate = 66.79;
$total = $quantity * $product_rate;
echo $total;

输出显示1335.8000000000002

有可能使用php显示1335.8吗?

4 个答案:

答案 0 :(得分:1)

您可以使用 number_format() 这样的功能:

$firstNum = 1335.8000000000002;
$number = number_format($firstNum, 1, '.', '');

echo $number;

输出:

1335.8

更多关于number_format()http://php.net/number-format

您还可以将数字乘以10,然后使用intval()将其转换为integer(以此方式删除小数),然后除以10,如下所示:

$firstNum = 1335.8000000000002;
$number = 10 * intval($firstNum)/10;

echo $number;

输出:

1335.8

注意:使用上述方法时不会进行舍入,对于舍入,您可以使用以下内容:

$number = round($firstNum, 1);

echo $number;

在这种情况下也输出:

1335.8

答案 1 :(得分:0)

你真的使用这些变量值吗?我正在使用PHP7,您给定值的输出是1335.8。如果进行手动计算,则结果相同。它应该是1335.8。无论如何,如果您需要对下面可以使用的值进行综合。 轮($总,1); 请参阅以下链接,您将能够获得更多详细信息。 http://php.net/manual/en/function.round.php

答案 2 :(得分:0)

由于浮点数的工作原理如何,它们无法准确表示每个数字,因此可以进行近似。

20的最近代表是20,它可以完全代表20,但66.79例如近似为66.7900000000000062527760746889,时间20 1}} 1335.800000000000125055521493778再次无法表示,并且近似为1335.80000000000018189894035459

根据您选择打印此数字的方式,它可能会采用不同的方式,在您的情况下由于某种原因您决定打印13位小数以使其四舍五入为1335.8000000000002,但如果您只打印1或2小数位数将打印为1335.81335.80。在打印浮点数时,请注意,您可能需要指定与您相关的小数位数。为此,请使用number_format()

示例:

echo number_format($number, 2); // prints 2 decimal places

答案 3 :(得分:0)

您只需使用echo echo round($total, 1)而不是round($total)

即可