Subhojit1992
7/20/2017 - 4:52 AM

## Rounding decimals in Sass

Rounding decimals in Sass

``````// _decimal.scss | MIT License | gist.github.com/terkel/4373420

// Round a number to specified digits.
//
// @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
//     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 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
//     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 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
//     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);
}
``````