Variant HHVM_FUNCTION(floor, const Variant& number) { int64_t ival; double dval; DataType k = zend_convert_scalar_to_number(number, ival, dval); if (k == KindOfInt64) { dval = (double)ival; } else if (k != KindOfDouble) { return false; } return floor(dval); }
Variant f_ceil(const Variant& number) { int64_t ival; double dval; DataType k = zend_convert_scalar_to_number(number, ival, dval); if (k == KindOfInt64) { dval = (double)ival; } else if (k != KindOfDouble) { return false; } return ceil(dval); }
Variant HHVM_FUNCTION(abs, const Variant& number) { int64_t ival; double dval; DataType k = zend_convert_scalar_to_number(number, ival, dval); if (k == KindOfDouble) { return fabs(dval); } else if (k == KindOfInt64) { return ival >= 0 ? ival : -ival; } else { return false; } }
Variant f_round(const Variant& val, int64_t precision /* = 0 */, int64_t mode /* = PHP_ROUND_HALF_UP */) { int64_t ival; double dval; DataType k = zend_convert_scalar_to_number(val, ival, dval); if (k == KindOfInt64) { if (precision >= 0) { return (double)ival; } else { dval = ival; } } else if (k != KindOfDouble) { return false; } dval = php_math_round(dval, precision, mode); return dval; }