php Остаток от деления одного числа на другое
Primary tabs
Здравствуйте.
Решая задачу,
Дано некоторое число длиной от 1 до 5 символов, вывести все его "нечётные" цифры в обратном порядке
используя оператор "%" и занося нечетные цифры в массив, я обратил внимание на то, что оператор % работает только с первой цифрой после запятой. Верно мое наблюдение?
while ($num >= 1) { $remOfDiv = $num % 10; if ($remOfDiv % 2 == 1) { $remOfDiv_arr[] = $remOfDiv; // массив НЕчетных цифр } else { $remOfDiv_arr_1[] = $remOfDiv; // массив ЧЕтных цифр } $num = $num / 10; // в/о остаток от деления нужно вычесть из числа? print_r ($remOfDiv_arr); }
Ведь, при
$num = 234
мы имеем три итерации:
1.
$num = 234 % 10 = 4
- заносим в массив четных цифр, далее
234 / 10 = 23,4
2.
$num = 23,4 % 10 = 34 ????
- тогда "34" заносим в массив четных цифр, но, судя по работе интерпретатора, он видит цифру "3".
3. ...
Т.е., верно мое предположение, что оператор "%" работает только с первой цифрой после запятой?
- Log in to post comments
- 3445 reads
math2
Fri, 04/19/2019 - 16:21
Permalink
$res = 23.4 % 10;
Результат здесь будет 3. % -- целочисленная операция. 23.4 приводится к integer.
$$
a\ \%\ b.
$$
% работает не только с последней цифрой. Так будет казаться, если $a$ минус значение разряда единиц числа $a$ делится на $b$ нацело. Например так:
$ 23\ \%\ 10 = 3$; $23 = 20 + 3 = 10\cdot2 + 3$.
$ 216\ \%\ 7 = 6$; $216 = 30\cdot 7 + 6$.
Но вообще, это не так:
$ 256\ \%\ 7 = 4$ и $6\ \%\ 7 = 6$.
math2
Fri, 04/19/2019 - 16:25
Permalink
Т.е., верно мое предположение
Я так понял, что речь шла о первой цифре перед запятой. О разряде единиц.
Laven
Fri, 04/19/2019 - 17:51
Permalink
да, до совершения действия %,
да, до совершения действия %,
и после запятой после действия %.