我试图弄清楚如何在不舍入最后一位数的情况下切断小数。
例如,如果我的号码是1394.95861
,我希望它显示1.39
- 我不希望最后9
向上舍入为0或者舍入降到8。
我已尝试过round,format_format以及所有这些,但它们都只是在最后一位数字上方。
if($number >= '1000') {
$result = number_format(($number / 1000), 2);
return $result;
}
答案 0 :(得分:1)
我不会使用>= '1000'
,因为它将$number
视为字符串。
试试这个:
if($number >= 1000) {
$num = floor($number / 10) / 100;
$result = number_format($num, 2);
return $result . 'k';
}
我根据您的问题和代码对其进行了修改,但关键是floor
用于删除剩余的小数点(因此我先将10除以10),然后除以您想要保留的小数点(除以100)得到你的号码。
编辑:计算示例
$number = 123456789.987654321;
然后,$number >= 1000
为真。
$number / 10
= 12345678.9987654321
并且,地板是
12345678
除以100,我们得到
123456.78
然后,通过数字格式来获取
123,456.78
然后为结果添加k
:
123,456.78k
每次聊天修改代码:
function shorten_number($number) {
if($number >= 1000000000) {
$result = floor($number / 10000000) / 100;
return number_format($result) . 'b';
} elseif($number >= 1000000) {
$num = floor($number / 10000) / 100;
$result = number_format($num, 2);
return $result . 'm';
} elseif($number >= 1000) {
$num = floor($number / 10) / 100;
$result = number_format($num, 2);
return $result . 'k';
} elseif($number < 1000) {
$result = $number;
return $result;
}
}
答案 1 :(得分:0)
手动完成 -
$num = 12345.6789;
$number = explode('.', $num);
if (isset($number[1])) {
if (isset($number[1][0])) {
$number[0] .= '.'.$number[1][0];
if (isset($number[1][1])) {
$number[0] .= $number[1][1];
}
}
}
echo (float) $number[0];
答案 2 :(得分:-1)
主要思想是:使用floor
创建具有正确数字的整数位。
$number = 1394958.61;
if($number >= '1000') {
$result = number_format((floor($number /10)/100), 2);
echo $result . 'k';
}
或使用类型转换。
$result = number_format((intval($number /10)/100), 2);