为什么从小数部分php中修剪零对于.00不准确



我有这个浮点值1290.00,我想用最干净的方式修剪右边的零来得到1290,但如果使用trim函数,为什么我得到129

代码:

<?php
$var = '1290.00';
printf ("value: %s -> %sn", $var, trim($var, '.00'));

输出:

value: 1290.00 -> 129

我看到了不使用修剪功能的不同解决方案,但为什么修剪不起作用?我也试过戈朗,得到了同样的行为。

Trim从末尾单独删除字符,而不是作为短语。它会删除所有找到的字符,直到在列表中找不到其他字符为止。所以它删除了0,0,句号,然后是0。在这种情况下,我建议使用roundnumber_format

number_format($var, 0, '', ''); // 1290

trim不能这样工作。只指定要修剪的字符一次,两个句点用于指定范围。然后,它将从结尾处修剪所有这些字符。

一种更有效的方法可能是intval($var)

根据您的使用情况,请注意number_format()也会对值进行四舍五入(请参阅文档的第一个示例(。如果需要截断数字,可以使用floor():

number_format(1.9, 0, '', '');    // string(1) "2"
floor(1.9);                       // 1

最新更新