如何在没有舍入的情况下切断小数?

时间:2014-09-12 05:25:30

标签: php

我试图弄清楚如何在不舍入最后一位数的情况下切断小数。

例如,如果我的号码是1394.95861,我希望它显示1.39 - 我不希望最后9向上舍入为0或者舍入降到8。

我已尝试过round,format_format以及所有这些,但它们都只是在最后一位数字上方。

if($number >= '1000') {

        $result = number_format(($number / 1000), 2);
        return $result;
}

3 个答案:

答案 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);