double f_round(CVarRef val, int64_t precision /* = 0 */, int64_t mode /* = PHP_ROUND_HALF_UP */) { int64_t ival; double dval; DataType k = val.toNumeric(ival, dval, true); if (k == KindOfInt64) { if (precision >= 0) { return ival; } else { dval = ival; } } else if (k != KindOfDouble) { dval = val.toDouble(); } dval = php_math_round(dval, precision, mode); return dval; }
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; }