Мне нужно вычесть 1 из числа 294867828828426241
в PHP. Однако, когда я это делаю
$a = 294867828828426241 - 1;
Я получаю номер с плавающей запятой 2.94867828828E+17
. Который, когда разрешено number_format()
дает исходное число.
Как я могу получить правильное значение, пожалуйста?
Это должно быть способно работать с разными номерами.
Если у вас есть расширение BCMath, вы можете использовать это:
$a = bcsub('294867828828426241', '1'); echo $a; // 294867828828426240
Однако, тестирование на моем 64-битном сервере, ваш код должен работать правильно. Я не уверен, но вы можете проверить, не повлияет ли увеличение точности директивы в вашем php.ini
. У меня установлен мой в 14.