XBRL-Instance.php
public static function inferDecimals( $value, $precision )
	{
		if ( is_string( $value ) )
		{
			// BMS 2017-08-22 	Removed this line because functions test 80154 V-05 fails
			//					and none of the XBRL 2.1 conformance tests seem to touch it.
			// $value = trim( $value, "0 " );

			if ( $value == 'INF' ) return "INF";
			$value = intval( $value );
		}

		// BMS 2017-12-18 Changed test to use ===
		if ( $value == 0 || $precision === "INF" ) return INF;
		if ( $precision == 0 ) return false;

		return $precision - intval( floor( log10( abs( $value ) ) ) ) - 1;
	}
public static function inferDecimals( $value, $precision )
	{
		if ( is_string( $value ) )
		{
			// BMS 2017-08-22 	Removed this line because functions test 80154 V-05 fails
			//					and none of the XBRL 2.1 conformance tests seem to touch it.
			// $value = trim( $value, "0 " );

			if ( $value == 'INF' ) return "INF";
			$value = intval( $value );
		}

		// BMS 2017-12-18 Changed test to use ===
		if ( $value == 0 || $precision === "INF" ) return INF;
		if ( $precision == 0 ) return false;

		return $precision - intval( floor( log10( abs( $value ) ) ) ) - 1;
	}
public static function inferDecimals ( $ value , $ precision ) { if ( is_string ( $ value ) ) { // BMS 2017-08-22 	Removed this line because functions test 80154 V-05 fails
 //					and none of the XBRL 2.1 conformance tests seem to touch it.
 // $value = trim( $value, "0 " );
 if ( $ value == 'INF' ) return "INF" ; $ value = intval ( $ value ) ; } // BMS 2017-12-18 Changed test to use ===
 if ( $ value == 0 || $ precision === "INF" ) return INF ; if ( $ precision == 0 ) return false ; return $ precision - intval ( floor ( log10 ( abs ( $ value ) ) ) ) - 1 ; }
Infer the decimals given a value and a precision value

@param number|string $value
@param number|string $precision
@return int
Infer the decimals given a value and a precision value