wc_format_decimal
Format decimal numbers ready for DB storage.
Description
Sanitize, remove locale formatting, and optionally round + trim off zeros.
Returns (string)
Parameters (3)
- 0. $number (number)
- Expects either a float or a string with a decimal separator only (no thousands)
- 1. $dp — Optional. (constant) =>
false
- Number of decimal points to use, blank to use woocommerce_price_num_decimals, or false to avoid all rounding.
- 2. $trim_zeros — Optional. (bool) =>
false
- From end of string
Usage
if ( !function_exists( 'wc_format_decimal' ) ) { require_once ABSPATH . PLUGINDIR . 'woocommerce/includes/wc-formatting-functions.php'; } // Expects either a float or a string with a decimal separator only (no thousands) $number = null; // number of decimal points to use, blank to use woocommerce_price_num_decimals, or false to avoid all rounding. $dp = false; // from end of string $trim_zeros = false; // NOTICE! Understand what this does before running. $result = wc_format_decimal($number, $dp, $trim_zeros);
Defined (1)
The function is defined in the following location(s).
- /includes/wc-formatting-functions.php
- function wc_format_decimal( $number, $dp = false, $trim_zeros = false ) {
- $locale = localeconv();
- $decimals = array( wc_get_price_decimal_separator(), $locale['decimal_point'], $locale['mon_decimal_point'] );
- // Remove locale from string.
- if ( ! is_float( $number ) ) {
- $number = wc_clean( str_replace( $decimals, '.', $number ) );
- $number = preg_replace( '/[^0-9\., -]/', '', $number );
- }
- if ( false !== $dp ) {
- $dp = intval( '' == $dp ? wc_get_price_decimals() : $dp );
- $number = number_format( floatval( $number ), $dp, '.', '' );
- // DP is false - don't use number format, just return a string in our format
- } elseif ( is_float( $number ) ) {
- $number = wc_clean( str_replace( $decimals, '.', strval( $number ) ) );
- }
- if ( $trim_zeros && strstr( $number, '.' ) ) {
- $number = rtrim( rtrim( $number, '0' ), '.' );
- }
- return $number;
- }