Подтвердить что ты не робот

Разделить целое число и получить целочисленное значение

В таких языках, как C или Python, если я делю целое число на целое число, я получаю целое число:

>>> 8/3
2

Но в PHP, если я делю целое число на другое целое число с /, иногда я получаю float:

php > var_dump(6/3);
int(2)
php > var_dump(8/3);
float(2.6666666666667)

Я хотел бы делать деление, как в Python или C, так что 8/3 равно 2. Как я могу сделать это в PHP?

4b9b3361

Ответ 1

используйте round() функцию, чтобы получить целочисленное округленное значение.

round(8 / 3); // 3

или

Используйте floor() функцию для получения целочисленного значения

floor(8 / 3); // 2

Ответ 2

В PHP 7 функция intdiv делает именно то, что вы хотите.

Использование:

intdiv(8, 3);

Возвращает 2.

Ответ 3

В PHP нет целочисленного оператора деления. 1/2 дает поплавок 0,5. Значение может быть отлито для целого числа, округляя его вниз, или функция round() обеспечивает более точное управление округлением.


var_dump(25/7);           // float(3.5714285714286)    
var_dump((int) (25/7));   // int(3)   
var_dump(round(25/7));    // float(4)     

Руководство PhP

Ответ 4

используйте это....

intval(1700000 / 300000 )...

это возвращает целочисленное значение.

Ответ 5

(int)(1700000 / 300000);

использовать литье типов.

Ответ 6

Существует несколько способов выполнения целочисленного деления в PHP. Язык не имеет оператора для целочисленного деления, но существует несколько вариантов округления числа с плавающей запятой к целому числу:

<?php
$pos = 1;
$neg = -1;
$divisor = 2;

// No rounding (float division)
var_dump($pos / $divisor);          //  0.5
var_dump($neg / $divisor);          // -0.5

// Round toward zero (like C integer division)
var_dump((int)($pos / $divisor));   //  0
var_dump((int)($neg / $divisor));   //  0

// Round half away from zero
var_dump(round($pos / $divisor));   //  1
var_dump(round($neg / $divisor));   // -1

// Round down
var_dump(floor($pos / $divisor));   //  0
var_dump(floor($neg / $divisor));   // -1

# And on PHP 7 you can round toward zero with intdiv():
var_dump(intdiv($pos, $divisor));   //  0
var_dump(intdiv($neg, $divisor));   //  0   Round toward zero

На PHP 7 вы можете использовать intdiv($p, $q) для непосредственного выполнения целочисленного деления. Это эквивалентно (int)($p / $q) на PHP 5.

Ответ 7

Вы можете использовать короткую форму, добавив | 0 в конец

8/3 | 0

Ответ 8

Для версии PHP 7 => intdiv(a,b)

И для версий менее 7 (например, 5.6) => (int)floor(abs(a/b))

Ответ 9

Для PHP 7 попробуйте intdiv() :

Синтаксис: int intdiv($dividend, $divisor)

          <?php           
           $dividend = 19; 
           $divisor = 3;  
           echo intdiv($dividend, $divisor); 
           ?>

Для старых версий PHP:

         <?php
     // Convert $total_minutes to hours and minutes.

         $total_minutes = 640;
         $minutes = $total_minutes % 60;
         $hours = ($total_minutes - $minutes) / 60;

         echo "Time taken was $hours hours $minutes minutes";
         ?>