Понимание чего-то большего об операторе% Modulus

Я учусь работать с некоторой математикой, такой как запрос PHP, и только что пришел к модулю, я не совсем уверен, в каких ситуациях использовать это из-за чего-то, на чем я наткнулся, и да, я уже прочитал один из постов здесь о модуле:
Понимание модуля оператора%

(Это объяснение только для положительных чисел, так как в противном случае оно зависит от языка)

Цитата выше в верхнем ответе там. Но если я сосредоточусь только на PHP, и я использую по модулю, как это:

$x = 8;
$y = 10;
$z = $x % $y;
echo $z; // this outputs 8 and I semi know why.

Calculation: (8/10) 0 //times does 10 fit in 8.
0 * 10 = 0 //So this is the number that has to be taken off of the 8
8 - 0 = 8 //<-- answer

Calculation 2: (3.2/2.4) 1 //times does this fit
1 * 2.4 = 2.4 //So this is the number that has to be taken off of the 3.2
3.2 - 2.4 = 0.8 // but returns 1?

Поэтому мой вопрос: почему это происходит именно так? я думаю, что на первом этапе это получит 8/10 = 0,8 но этого не происходит Так может кто-нибудь объяснить немного о том, почему это происходит. Я понимаю основы по модулю, как если бы я сделал 10 % 8 = 2 и я почти понимаю, почему он не возвращает что-то вроде этого: 8 % 10 = -2,

Кроме того, есть ли способ изменить, как работает модуль? так что это вернет - значение или десятичное значение в расчете? или мне нужно использовать что-то еще для этого

Немного сокращено: почему это происходит, когда я получаю отрицательное число взамен и есть какой-то другой способ или оператор, который действительно может сделать то же самое и получить отрицательные числа.

0

Решение

Модуль (%) работает только для целых чисел, поэтому ваш расчет в нижней части вашего примера является правильным …

8/10 = 0 (только целое число), остаток = 8- (0 * 10) = 8.

Если у вас вместо этого -ve 12 — -12%10

-12/10 = -1 (снова только целое число), остаток = -12 — (10 * -1) = -2

Для поплавков — вы можете использовать fmod (http://php.net/manual/en/function.fmod.php)

<?php
$x = 5.7;
$y = 1.3;
$r = fmod($x, $y);
// $r equals 0.5, because 4 * 1.3 + 0.5 = 5.7

(Пример из руководства)

2

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

Других решений пока нет …

По вопросам рекламы [email protected]