Пример #1
0
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;
}
Пример #2
0
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;
}