PHP одна цифра после десятичной точки для действительных чисел и без цифр для целых значений

Как лучше всего преобразовать число в:

  1. одна цифра после десятичной точки, если это число является действительным числом
  2. без цифр, без десятичной точки, если число является целым числом

Пример:

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

-2

Решение

Если вы точно знаете, что все ваши номера будут в этом формате, вы можете просто использовать 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,

3

Другие решения

if (abs($num - (int)$num) < 0.001)
echo (int)$num;
else
echo number_format($num, 1);
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);
}
0
По вопросам рекламы [email protected]