From 8ca5bda422a1f57d6d58596e7949dc335b60e6ba Mon Sep 17 00:00:00 2001 From: Michael Mclaughlin Date: Mon, 10 Nov 2014 15:55:57 +0000 Subject: [PATCH] v4.0.0 Updated API doc and image re format --- API.png | Bin 18002 -> 18312 bytes index.html | 137 +++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 102 insertions(+), 35 deletions(-) diff --git a/API.png b/API.png index b01edc0226e9baf2bada72b364325ad93f96ee9b..32dc5917eb1f977a9dc413d9a2e4c24c06940326 100644 GIT binary patch literal 18312 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 literal 18002 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
  • modulo
  • crypto
  • +
  • format
  •  
  • ROUND_UP
  • ROUND_DOWN
  • @@ -353,7 +354,15 @@ Decimal.config({ maxE: 9e15, errors: true, crypto: false, - modulo: 1 + modulo: 1, + format: { + decimalSeparator : '.', + groupSeparator : ',', + groupSize : 3, + secondaryGroupSize : 0, + fractionGroupSeparator : '\xA0', // non-breaking space + fractionGroupSize : 0 + } })

    The properties of a Decimal constructor can also be set by direct assignment, but that will @@ -558,13 +567,16 @@ x.equals(y) // true rounding, minE, maxE, toExpNeg, toExpPos, errors, - modulo and crypto are - set using the config method. + modulo, crypto and + format are set using the + config method.

    As simple object properties they can be set directly without using config, and it is fine to do so, but the values assigned - will not then be checked for validity. For example: + will not then be checked for validity (the properties of the + format object are not checked by + config). For example:

    Decimal.config({ precision: 0 })
     // 'Decimal Error: config() precision out of range: 0'
    @@ -856,6 +868,47 @@ Decimal.config({ crypto: true })
    +
    format
    +

    object +

    + The format object configures the format of the string returned by the + toFormat method. +

    +

    + The example below shows the properties of the format object + that are recognised, and their default values. +

    +

    + Unlike setting other properties using config, the values of the + properties of the format object will not be checked for validity. The existing + format object will simply be replaced by the object that is passed in. Only the + toFormat method ever references a Decimal constructor's + format object property. +

    +

    + See toFormat for examples of usage, and of setting + format properties individually and directly without using config. +

    +
    +Decimal.config({
    +    format : {
    +        // the decimal separator
    +        decimalSeparator : '.',
    +        // the grouping separator of the integer part of the number
    +        groupSeparator : ',',
    +        // the primary grouping size of the integer part of the number
    +        groupSize : 3,
    +        // the secondary grouping size of the integer part of the number
    +        secondaryGroupSize : 0,
    +        // the grouping separator of the fraction part of the number
    +        fractionGroupSeparator : ' ',
    +        // the grouping size of the fraction part of the number
    +        fractionGroupSize : 0
    +    }
    +});
    + + +
    Rounding modes

    The library's enumerated rounding modes are stored as properties of a Decimal constructor. @@ -1622,47 +1675,61 @@ y.toFixed(5) // '3.45600'

    - toFormat.toFormat([sep1 [, dp [, sep2]]]) ⇒ string + toFormat.toFormat([dp [, rm]]) ⇒ string

    - sep1: string: the grouping separator of the integer part of the number -
    - sep2: string: the grouping separator of the fraction part of the number -
    - dp: number: integer, 0 to 8 inclusive + dp: number: integer, 0 to 1e+9 inclusive
    + rm: number: integer, 0 to 8 inclusive

    - - This method is a placeholder and is likely to be subject to change / further development. - + Returns a string representing the value of this Decimal in fixed-point notation rounded to + dp decimal places using rounding mode rm (as + toFixed), and formatted according to the properties of this + Decimal's constructor's format object property.

    - Returns a string representing the value of this Decimal to dp decimal places, - (see toFixed), but with the integer part of the number - separated by sep1 into groups of three digits, and the fraction part of the - number separated into groups of five digits by sep2. -

    -

    - If sep1 is null or undefined, the integer part groupings will be - separated by a comma. -

    -

    - If sep2 is null or undefined, the fraction part groupings will not - be separated. + See the examples below for the properties of the format + object, their types and their usage.

    If dp is omitted or is null or undefined, then the return value is not rounded to a fixed number of decimal places.

    -

    A useful separator character is the non-breaking thin-space: \u202f.

    +

    + if rm is omitted or is null or undefined, rounding mode + rounding is used. +

    -x = new Decimal('1.23456000000000000000789e+9')
    -x.toFormat()                     // '1,234,560,000.00000000000789'
    -x.toFormat(' ')                  // '1 234 560 000.00000000000789'
    -x.toFormat(',', 2)               // '1,234,560,000.00'
    -x.toFormat(' ', 2)               // '1 234 560 000.00'
    -x.toFormat(',', 12, ' ')         // '1 ,234,560,000.00000 00000 08'
    -x.toFormat('-', 14, '-')         // '1-234-560-000.00000-00000-0789'
    +// Using config to assign values to the format object +Decimal.config({ + format : { + decimalSeparator : '.', + groupSeparator : ',', + groupSize : 3, + secondaryGroupSize : 0, + fractionGroupSeparator : ' ', + fractionGroupSize : 0 + } +}); + +x = new Decimal('123456789.123456789') +x.toFormat() // '123,456,789.123456789' +x.toFormat(1) // '123,456,789.1' + +// Assigning the format properties directly +Decimal.format.groupSeparator = ' '; +Decimal.format.fractionGroupSize = 5; +x.toFormat() // '123 456 789.12345 6789' + +// Assigning the format object directly +Decimal.format = { + decimalSeparator = ',', + groupSeparator = '.', + groupSize = 3, + secondaryGroupSize = 2 +} + +x.toFormat() // '12.34.56.789,123456789' @@ -2359,8 +2426,8 @@ z = x.multiply(y) // 4.1400000