[英]How do I cut off a decimal without rounding?
I'm trying to figure out how to cut off decimals without rounding the last digit. 我试图弄清楚如何在不舍入最后一位数字的情况下舍弃小数。
For example, if my number is 1394.95861
, I would like it to show 1.39
- I don't want the last 9
to round up to a 0 or round down to an 8. 例如,如果我的号是1394.95861
,我想它显示1.39
-我不希望最后9
围捕为0或向下取整为8。
I've tried round, number_format, and all of those, but they all just round the last digit up. 我已经尝试过舍入,number_format以及所有这些,但是它们都只是将最后一位向上舍入。
if($number >= '1000') {
$result = number_format(($number / 1000), 2);
return $result;
}
I would not use >= '1000'
since that treats $number
as a string. 我不会使用>= '1000'
因为那样会将$number
视为字符串。
Try this: 尝试这个:
if($number >= 1000) {
$num = floor($number / 10) / 100;
$result = number_format($num, 2);
return $result . 'k';
}
I modified that based off of your question and code, but the key thing is floor
being used to drop the remaining decimal points (hence why I divide by 10 first), then divide by those you wanted to keep (the divide by 100) to get your number. 我修改,基于把你的问题和代码,但关键的是floor
正在利用这些你想(由100分),以保持下降剩下的小数点(所以为什么我10先分),然后分给得到你的电话号码。
EDIT: Calculational example 编辑:计算示例
$number = 123456789.987654321;
Then, $number >= 1000
is true. 然后, $number >= 1000
为true。
$number / 10
= 12345678.9987654321
$number / 10
= 12345678.9987654321
And, the floor is 而且,地板是
12345678
Divided by 100, we get 除以100,我们得到
123456.78
Then, run through number format to get 然后,以数字格式运行以获取
123,456.78
And then add a k
for the result: 然后为结果添加一个k
:
123,456.78k
Modified code per chat: 每次聊天修改的代码:
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;
}
}
do it manually - 手动执行-
$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];
Main idea is: create integer digit with proper digits using floor
. 主要思想是:使用floor
创建具有适当数字的整数。
$number = 1394958.61;
if($number >= '1000') {
$result = number_format((floor($number /10)/100), 2);
echo $result . 'k';
}
Or using type casting. 或使用类型转换。
$result = number_format((intval($number /10)/100), 2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.