PHP: BCMath принимает целые числа?

Безопасно ли использовать переменные типа INT в функциях BCMath в PHP?

Пример:

<?php
$a = 1;
$b = "1";
echo bcadd($a,$b,0);
?>

Кажется, это работает, но безопасно ли это делать? Или есть, например, риск того, что PHP может интерпретировать INT как нечто иное, чем его значение int (я думаю о шестнадцатеричных значениях и т. Д.)?

Спасибо !

-1

Решение

Будьте осторожны с очень большими числами. Если вы назначите буквенное целое число> PHP_INT_MAX к переменной, PHP автоматически конвертирует его в число с плавающей точкой. Я знаю, что вы специально спрашивали о целых числах, и в этом случае вы бы передавали число с плавающей точкой, но если вы не знаете, что такое автоматическое преобразование похоже вы используете большой int, поэтому я подумал, что стоит упомянуть.

$a = 9223372036854775808;
$b = '1';

var_dump($b);              // float 9.2233720368548E+18
echo bcadd($a, $b, 0);     // echoes 1

По сути, функция принимает строку. Если вы дадите ему что-то, что не является строкой, PHP автоматически преобразует ее в строку, если это возможно, если вы не включили строгий режим.

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector