У меня есть очень длинное число в строковом формате, как это:
$startdate = "1437925621000";
На самом деле это метка времени Unix, но когда я преобразую ее из объекта даты в метку времени Unix, она становится строкой.
Мне нужно превратить это в это: 1437925621.000, поэтому я написал небольшой код, который добавляет десятичную точку к строке в правильном положении. Это все еще строка в этой точке.
Однако для сравнения это должен быть float, поэтому я преобразовал его в float, например:
$startdate = floatval($startdate);
Но когда я конвертирую его в число с плавающей точкой, он отсекает три нуля после десятичной точки, и мне нужно, чтобы они были там.
Я также попытался использовать number_format, но это возвращает строку, и когда я конвертирую ее обратно, чтобы всплывать, десятичные точки снова обрезаются. Есть ли способ обойти это?
Мне не нужно печатать этот номер. Мне нужно сравнить метки времени Unix. Я запрашиваю базу данных, которая содержит даты, хранящиеся в виде десятичных знаков с 4 десятичными знаками. Они используются как метки времени, но хранятся в виде десятичных знаков в базе данных MySQL.
Число, на которое я ссылаюсь, используется в запросе для выбора записей из этой базы данных на основе даты, которая хранится как десятичное число с 4 десятичными знаками. Если у меня нет десятичной точки, она не сравнивается правильно.
Вы можете добавить 0,0001 к floatval ($ startdate) и добавить 0,0001 к другому VAR, чтобы сравнить их
floatval($startdate) + 0.0001 === $otherVar + 0.0001
Других решений пока нет …