Skip to content

Instantly share code, notes, and snippets.

@jerrysdesign
Forked from terkel/_decimal.scss
Created November 5, 2015 06:30
Show Gist options
  • Select an option

  • Save jerrysdesign/da4c82a8b99a77d21525 to your computer and use it in GitHub Desktop.

Select an option

Save jerrysdesign/da4c82a8b99a77d21525 to your computer and use it in GitHub Desktop.

Revisions

  1. @terkel terkel revised this gist Oct 14, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion _decimal.scss
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    /*! _decimal.scss | MIT License | gist.github.com/terkel/4373420 */
    // _decimal.scss | MIT License | gist.github.com/terkel/4373420

    // Round a number to specified digits.
    //
  2. @terkel terkel revised this gist Nov 14, 2013. 1 changed file with 11 additions and 11 deletions.
    22 changes: 11 additions & 11 deletions _decimal.scss
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,11 @@
    // gist.github.com/terkel/4373420
    /*! _decimal.scss | MIT License | gist.github.com/terkel/4373420 */

    // Round a number to specified digits.
    //
    // @param {Number} $number number to round
    // @param {Number} $digits digits to output
    // @param {String} [$mode=round] (round|ceil|floor) how to round number
    // @return {Number} rounded number
    // @param {Number} $number A number to round
    // @param {Number} [$digits:0] Digits to output
    // @param {String} [$mode:round] (round|ceil|floor) How to round a number
    // @return {Number} A rounded number
    // @example
    // decimal-round(0.333) => 0
    // decimal-round(0.333, 1) => 0.3
    @@ -46,9 +46,9 @@

    // Ceil a number to specified digits.
    //
    // @param {Number} $number number to ceil
    // @param {Number} $digits digits to output
    // @return {Number} ceiled number
    // @param {Number} $number A number to round
    // @param {Number} [$digits:0] Digits to output
    // @return {Number} A ceiled number
    // @example
    // decimal-ceil(0.333) => 1
    // decimal-ceil(0.333, 1) => 0.4
    @@ -63,9 +63,9 @@

    // Floor a number to specified digits.
    //
    // @param {Number} $number number to floor
    // @param {Number} $digits digits to output
    // @return {Number} floored number
    // @param {Number} $number A number to round
    // @param {Number} [$digits:0] Digits to output
    // @return {Number} A floored number
    // @example
    // decimal-floor(0.333) => 0
    // decimal-floor(0.333, 1) => 0.3
  3. @terkel terkel revised this gist Nov 14, 2013. 2 changed files with 79 additions and 85 deletions.
    79 changes: 79 additions & 0 deletions _decimal.scss
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,79 @@
    // gist.github.com/terkel/4373420

    // Round a number to specified digits.
    //
    // @param {Number} $number number to round
    // @param {Number} $digits digits to output
    // @param {String} [$mode=round] (round|ceil|floor) how to round number
    // @return {Number} rounded number
    // @example
    // decimal-round(0.333) => 0
    // decimal-round(0.333, 1) => 0.3
    // decimal-round(0.333, 2) => 0.33
    // decimal-round(0.666) => 1
    // decimal-round(0.666, 1) => 0.7
    // decimal-round(0.666, 2) => 0.67
    //
    @function decimal-round ($number, $digits: 0, $mode: round) {
    $n: 1;
    // $number must be a number
    @if type-of($number) != number {
    @warn '#{ $number } is not a number.';
    @return $number;
    }
    // $digits must be a unitless number
    @if type-of($digits) != number {
    @warn '#{ $digits } is not a number.';
    @return $number;
    } @else if not unitless($digits) {
    @warn '#{ $digits } has a unit.';
    @return $number;
    }
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    @if $mode == round {
    @return round($number * $n) / $n;
    } @else if $mode == ceil {
    @return ceil($number * $n) / $n;
    } @else if $mode == floor {
    @return floor($number * $n) / $n;
    } @else {
    @warn '#{ $mode } is undefined keyword.';
    @return $number;
    }
    }

    // Ceil a number to specified digits.
    //
    // @param {Number} $number number to ceil
    // @param {Number} $digits digits to output
    // @return {Number} ceiled number
    // @example
    // decimal-ceil(0.333) => 1
    // decimal-ceil(0.333, 1) => 0.4
    // decimal-ceil(0.333, 2) => 0.34
    // decimal-ceil(0.666) => 1
    // decimal-ceil(0.666, 1) => 0.7
    // decimal-ceil(0.666, 2) => 0.67
    //
    @function decimal-ceil ($number, $digits: 0) {
    @return decimal-round($number, $digits, ceil);
    }

    // Floor a number to specified digits.
    //
    // @param {Number} $number number to floor
    // @param {Number} $digits digits to output
    // @return {Number} floored number
    // @example
    // decimal-floor(0.333) => 0
    // decimal-floor(0.333, 1) => 0.3
    // decimal-floor(0.333, 2) => 0.33
    // decimal-floor(0.666) => 0
    // decimal-floor(0.666, 1) => 0.6
    // decimal-floor(0.666, 2) => 0.66
    //
    @function decimal-floor ($number, $digits: 0) {
    @return decimal-round($number, $digits, floor);
    }
    85 changes: 0 additions & 85 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -1,85 +0,0 @@
    // terkel.jp/archives/2012/12/decimal-digits-and-rounding-sass-function

    // Round number to specified digits
    // @function round-decimal
    // @param {Number} $number number to round
    // @param {Number} $digits digits to output
    // @return {Number} rounded number
    // @example
    // round-decimal(0.333) => 0
    // round-decimal(0.333, 1) => 0.3
    // round-decimal(0.333, 2) => 0.33
    // round-decimal(0.666) => 1
    // round-decimal(0.666, 1) => 0.7
    // round-decimal(0.666, 2) => 0.67
    @function round-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, 'round');
    }

    // Ceil number to specified digits
    // @function ceil-decimal
    // @param {Number} $number number to ceil
    // @param {Number} $digits digits to output
    // @return {Number} ceiled number
    // @example
    // ceil-decimal(0.333) => 1
    // ceil-decimal(0.333, 1) => 0.4
    // ceil-decimal(0.333, 2) => 0.34
    // ceil-decimal(0.666) => 1
    // ceil-decimal(0.666, 1) => 0.7
    // ceil-decimal(0.666, 2) => 0.67
    @function ceil-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, 'ceil');
    }

    // Floor number to specified digits
    // @function floor-decimal
    // @param {Number} $number number to floor
    // @param {Number} $digits digits to output
    // @return {Number} floored number
    // @example
    // floor-decimal(0.333) => 0
    // floor-decimal(0.333, 1) => 0.3
    // floor-decimal(0.333, 2) => 0.33
    // floor-decimal(0.666) => 0
    // floor-decimal(0.666, 1) => 0.6
    // floor-decimal(0.666, 2) => 0.66
    @function floor-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, 'floor');
    }

    // Round, ceil or floor number to specified digits
    // @function to-fixed
    // @param {Number} $number number to round
    // @param {Number} $digits digits to output
    // @param {String} $round how to round number: 'round' (default), 'ceil' or 'floor'
    // @return {Number} rounded number
    @function to-fixed ($number, $digits: 0, $round: 'round') {
    $n: 1;
    // $number must be a number
    @if type-of($number) != number {
    @warn '#{ $number } is not a number.';
    @return $number;
    }
    // $digits must be a unitless number
    @if type-of($digits) != number {
    @warn '#{ $digits } is not a number.';
    @return $number;
    } @else if not unitless($digits) {
    @warn '#{ $digits } has a unit.';
    @return $number;
    }
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    @if $round == 'round' {
    @return round($number * $n) / $n;
    } @else if $round == 'ceil' {
    @return ceil($number * $n) / $n;
    } @else if $round == 'floor' {
    @return floor($number * $n) / $n;
    } @else {
    @warn '#{ $round } is undefined keyword.';
    @return $number;
    }
    }
  4. @terkel terkel revised this gist Jan 2, 2013. 1 changed file with 7 additions and 4 deletions.
    11 changes: 7 additions & 4 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,7 @@
    // round-decimal(0.666, 1) => 0.7
    // round-decimal(0.666, 2) => 0.67
    @function round-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits);
    @return to-fixed($number, $digits, 'round');
    }

    // Ceil number to specified digits
    @@ -54,7 +54,7 @@
    // @param {Number} $digits digits to output
    // @param {String} $round how to round number: 'round' (default), 'ceil' or 'floor'
    // @return {Number} rounded number
    @function to-fixed ($number, $digits: 0, $round: round) {
    @function to-fixed ($number, $digits: 0, $round: 'round') {
    $n: 1;
    // $number must be a number
    @if type-of($number) != number {
    @@ -72,11 +72,14 @@
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    @if $round == 'ceil' {
    @if $round == 'round' {
    @return round($number * $n) / $n;
    } @else if $round == 'ceil' {
    @return ceil($number * $n) / $n;
    } @else if $round == 'floor' {
    @return floor($number * $n) / $n;
    } @else {
    @return round($number * $n) / $n;
    @warn '#{ $round } is undefined keyword.';
    @return $number;
    }
    }
  5. @terkel terkel revised this gist Jan 2, 2013. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -29,7 +29,7 @@
    // ceil-decimal(0.666, 1) => 0.7
    // ceil-decimal(0.666, 2) => 0.67
    @function ceil-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, ceil);
    @return to-fixed($number, $digits, 'ceil');
    }

    // Floor number to specified digits
    @@ -45,7 +45,7 @@
    // floor-decimal(0.666, 1) => 0.6
    // floor-decimal(0.666, 2) => 0.66
    @function floor-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, floor);
    @return to-fixed($number, $digits, 'floor');
    }

    // Round, ceil or floor number to specified digits
  6. @terkel terkel revised this gist Jan 2, 2013. 1 changed file with 17 additions and 6 deletions.
    23 changes: 17 additions & 6 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -56,14 +56,25 @@
    // @return {Number} rounded number
    @function to-fixed ($number, $digits: 0, $round: round) {
    $n: 1;
    @if type-of($digits) == number {
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    // $number must be a number
    @if type-of($number) != number {
    @warn '#{ $number } is not a number.';
    @return $number;
    }
    @if $round == ceil {
    // $digits must be a unitless number
    @if type-of($digits) != number {
    @warn '#{ $digits } is not a number.';
    @return $number;
    } @else if not unitless($digits) {
    @warn '#{ $digits } has a unit.';
    @return $number;
    }
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    @if $round == 'ceil' {
    @return ceil($number * $n) / $n;
    } @else if $round == floor {
    } @else if $round == 'floor' {
    @return floor($number * $n) / $n;
    } @else {
    @return round($number * $n) / $n;
  7. @terkel terkel revised this gist Jan 2, 2013. 1 changed file with 42 additions and 24 deletions.
    66 changes: 42 additions & 24 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -1,41 +1,59 @@
    // terkel.jp/archives/2012/12/decimal-digits-and-rounding-sass-function

    // Round
    // Round number to specified digits
    // @function round-decimal
    // @param {Number} $number number to round
    // @param {Number} $digits digits to output
    // @return {Number} rounded number
    // @example
    // round-decimal(0.333) => 0
    // round-decimal(0.333, 1) => 0.3
    // round-decimal(0.333, 2) => 0.33
    // round-decimal(0.666) => 1
    // round-decimal(0.666, 1) => 0.7
    // round-decimal(0.666, 2) => 0.67
    @function round-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits);
    }

    // round-decimal(0.333) => 0
    // round-decimal(0.333, 1) => 0.3
    // round-decimal(0.333, 2) => 0.33
    // round-decimal(0.666) => 1
    // round-decimal(0.666, 1) => 0.7
    // round-decimal(0.666, 2) => 0.67

    // Ceil
    // Ceil number to specified digits
    // @function ceil-decimal
    // @param {Number} $number number to ceil
    // @param {Number} $digits digits to output
    // @return {Number} ceiled number
    // @example
    // ceil-decimal(0.333) => 1
    // ceil-decimal(0.333, 1) => 0.4
    // ceil-decimal(0.333, 2) => 0.34
    // ceil-decimal(0.666) => 1
    // ceil-decimal(0.666, 1) => 0.7
    // ceil-decimal(0.666, 2) => 0.67
    @function ceil-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, ceil);
    }

    // ceil-decimal(0.333) => 1
    // ceil-decimal(0.333, 1) => 0.4
    // ceil-decimal(0.333, 2) => 0.34
    // ceil-decimal(0.666) => 1
    // ceil-decimal(0.666, 1) => 0.7
    // ceil-decimal(0.666, 2) => 0.67

    // Floor
    // Floor number to specified digits
    // @function floor-decimal
    // @param {Number} $number number to floor
    // @param {Number} $digits digits to output
    // @return {Number} floored number
    // @example
    // floor-decimal(0.333) => 0
    // floor-decimal(0.333, 1) => 0.3
    // floor-decimal(0.333, 2) => 0.33
    // floor-decimal(0.666) => 0
    // floor-decimal(0.666, 1) => 0.6
    // floor-decimal(0.666, 2) => 0.66
    @function floor-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, floor);
    }

    // floor-decimal(0.333) => 0
    // floor-decimal(0.333, 1) => 0.3
    // floor-decimal(0.333, 2) => 0.33
    // floor-decimal(0.666) => 0
    // floor-decimal(0.666, 1) => 0.6
    // floor-decimal(0.666, 2) => 0.66

    // Round, ceil or floor number to specified digits
    // @function to-fixed
    // @param {Number} $number number to round
    // @param {Number} $digits digits to output
    // @param {String} $round how to round number: 'round' (default), 'ceil' or 'floor'
    // @return {Number} rounded number
    @function to-fixed ($number, $digits: 0, $round: round) {
    $n: 1;
    @if type-of($digits) == number {
  8. @terkel terkel revised this gist Dec 28, 2012. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    // terkel.jp/archives/2012/12/decimal-digits-and-rounding-sass-function

    // Round
    @function round-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits);
  9. @terkel terkel revised this gist Dec 28, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -48,4 +48,4 @@
    } @else {
    @return round($number * $n) / $n;
    }
    }
    }
  10. @terkel terkel revised this gist Dec 26, 2012. 1 changed file with 17 additions and 17 deletions.
    34 changes: 17 additions & 17 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -1,19 +1,3 @@
    @function to-fixed ($number, $digits: 0, $round: round) {
    $n: 1;
    @if type-of($digits) == number {
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    }
    @if $round == ceil {
    @return ceil($number * $n) / $n;
    } @else if $round == floor {
    @return floor($number * $n) / $n;
    } @else {
    @return round($number * $n) / $n;
    }
    }

    // Round
    @function round-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits);
    @@ -48,4 +32,20 @@
    // floor-decimal(0.333, 2) => 0.33
    // floor-decimal(0.666) => 0
    // floor-decimal(0.666, 1) => 0.6
    // floor-decimal(0.666, 2) => 0.66
    // floor-decimal(0.666, 2) => 0.66

    @function to-fixed ($number, $digits: 0, $round: round) {
    $n: 1;
    @if type-of($digits) == number {
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    }
    @if $round == ceil {
    @return ceil($number * $n) / $n;
    } @else if $round == floor {
    @return floor($number * $n) / $n;
    } @else {
    @return round($number * $n) / $n;
    }
    }
  11. @terkel terkel revised this gist Dec 25, 2012. 1 changed file with 21 additions and 21 deletions.
    42 changes: 21 additions & 21 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -15,37 +15,37 @@
    }

    // Round
    @function round-float ($number, $digits: 0) {
    @function round-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits);
    }

    // round-float(0.333) => 0
    // round-float(0.333, 1) => 0.3
    // round-float(0.333, 2) => 0.33
    // round-float(0.666) => 1
    // round-float(0.666, 1) => 0.7
    // round-float(0.666, 2) => 0.67
    // round-decimal(0.333) => 0
    // round-decimal(0.333, 1) => 0.3
    // round-decimal(0.333, 2) => 0.33
    // round-decimal(0.666) => 1
    // round-decimal(0.666, 1) => 0.7
    // round-decimal(0.666, 2) => 0.67

    // Ceil
    @function ceil-float ($number, $digits: 0) {
    @function ceil-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, ceil);
    }

    // ceil-float(0.333) => 1
    // ceil-float(0.333, 1) => 0.4
    // ceil-float(0.333, 2) => 0.34
    // ceil-float(0.666) => 1
    // ceil-float(0.666, 1) => 0.7
    // ceil-float(0.666, 2) => 0.67
    // ceil-decimal(0.333) => 1
    // ceil-decimal(0.333, 1) => 0.4
    // ceil-decimal(0.333, 2) => 0.34
    // ceil-decimal(0.666) => 1
    // ceil-decimal(0.666, 1) => 0.7
    // ceil-decimal(0.666, 2) => 0.67

    // Floor
    @function floor-float ($number, $digits: 0) {
    @function floor-decimal ($number, $digits: 0) {
    @return to-fixed($number, $digits, floor);
    }

    // floor-float(0.333) => 0
    // floor-float(0.333, 1) => 0.3
    // floor-float(0.333, 2) => 0.33
    // floor-float(0.666) => 0
    // floor-float(0.666, 1) => 0.6
    // floor-float(0.666, 2) => 0.66
    // floor-decimal(0.333) => 0
    // floor-decimal(0.333, 1) => 0.3
    // floor-decimal(0.333, 2) => 0.33
    // floor-decimal(0.666) => 0
    // floor-decimal(0.666, 1) => 0.6
    // floor-decimal(0.666, 2) => 0.66
  12. @terkel terkel created this gist Dec 25, 2012.
    51 changes: 51 additions & 0 deletions _to-fixed.scss
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,51 @@
    @function to-fixed ($number, $digits: 0, $round: round) {
    $n: 1;
    @if type-of($digits) == number {
    @for $i from 1 through $digits {
    $n: $n * 10;
    }
    }
    @if $round == ceil {
    @return ceil($number * $n) / $n;
    } @else if $round == floor {
    @return floor($number * $n) / $n;
    } @else {
    @return round($number * $n) / $n;
    }
    }

    // Round
    @function round-float ($number, $digits: 0) {
    @return to-fixed($number, $digits);
    }

    // round-float(0.333) => 0
    // round-float(0.333, 1) => 0.3
    // round-float(0.333, 2) => 0.33
    // round-float(0.666) => 1
    // round-float(0.666, 1) => 0.7
    // round-float(0.666, 2) => 0.67

    // Ceil
    @function ceil-float ($number, $digits: 0) {
    @return to-fixed($number, $digits, ceil);
    }

    // ceil-float(0.333) => 1
    // ceil-float(0.333, 1) => 0.4
    // ceil-float(0.333, 2) => 0.34
    // ceil-float(0.666) => 1
    // ceil-float(0.666, 1) => 0.7
    // ceil-float(0.666, 2) => 0.67

    // Floor
    @function floor-float ($number, $digits: 0) {
    @return to-fixed($number, $digits, floor);
    }

    // floor-float(0.333) => 0
    // floor-float(0.333, 1) => 0.3
    // floor-float(0.333, 2) => 0.33
    // floor-float(0.666) => 0
    // floor-float(0.666, 1) => 0.6
    // floor-float(0.666, 2) => 0.66