PHP为小数点后一位数为实数,没有数字为整数值

时间:2017-02-14 20:08:27

标签: php numbers digit

将数字转换为:

的最佳解决方案是什么?
  1. 如果该数字是实数,则小数点后一位数
  2. 没有数字,如果数字是整数,则没有小数点
  3. 示例:

    if ($num == 8.2) //display 8.2
    if ($num == 8.0) //display 8
    

    注意:我没有像8.22或8.02那样的数字。我会有这种类型的数字:

    1,1.2,1.4 ...... 2.6,2.8,3 ...... 9.8,10

3 个答案:

答案 0 :(得分:3)

如果您确定所有号码都采用该格式,那么您应该只能使用round。 (通常情况下,round 可以很好地进行格式化,但在这种情况下它应该可以完成这项工作。)

foreach ([8, 8.2, 1, 1.2, 1.4, 2.6, 2.8, 3, 9.8, 10] as $number) {
    echo round($number, 1) . PHP_EOL;
}

有些人可能会另有假设,但echo round(8.0, 1);会显示8,而不是8.0

答案 1 :(得分:0)

if (abs($num - (int)$num) < 0.001)
  echo (int)$num;
else
  echo number_format($num, 1);

答案 2 :(得分:0)

使用楼层和一些算术以及number_format

$num = 8.0;

//8.0 - 8 = 0
//8.2 - 8 = .2
if($num - floor($num)>0) {
    // Leaves 1 decimal
    echo number_format($num,1);
    // or if rounding
    //echo round($num, 1);
} else {
    // Leaves 0 decimal
    echo number_format($num,0);
    // or if rounding
    //echo round($num, 0);
}