Используйте одну из библиотек bigint, которые позволяют создавать произвольные прецедентные числа в стоимости производительности. Или вы должны написать свой собственный класс для эмуляции PHP-гибридной функциональности float-int
Примерно так
class IntFloat {
union {
float fval;
int ival;
} val;
bool foatUsed;
public:
setVal(float val)
{
this->val.fval = val;
floatUsed = true;
}
setVal(int val)
{
this->val.ival = val;
floatUsed = false;
}
//additional code for getters, setters, operators etc
}
Однако то, что делает PHP, не заслуживает подражания.
Список больших библиотек int можно найти в wikipedia
PS:
"или как они хранят числа с плавающей запятой / двойной точности?"
Да, это другое. C ++ хранит их прямо в формате целевой машины, тогда как PHP использует промежуточное представление (или байт-код, или в случае кода операции PHP). Таким образом, PHP преобразует число в формат машины под капотом.