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



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



>>> 8/3
2


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



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


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

510   8  
PHP

8 ответов:

использовать round() функция для получения целого округленного значения.

round(8 / 3); // 3

или

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

floor(8 / 3); // 2

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

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

intdiv(8, 3);

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

в 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

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

intval(1700000 / 300000 )...

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

(int)(1700000 / 300000);

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

существует несколько способов выполнения целочисленного деления в 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.

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

8/3/0

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

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

Comments

    Ничего не найдено.