Зафиксировать число до N цифр онлайн урок.


При обработке чисел в JavaScript или любом другом языке программирования существует способ усечения числа послеnцифр. К сожалению, в Сассе нет такой функции. Тем не менее, проблемы округления и точности возникают, например, при работе с сетчатыми системами на основе процентов.

Вот реализация SasstoFixed ():

/// toFixed() function in Sass
/// @author Hugo Giraudel
/// @param {Number} $float - Number to format
/// @param {Number} $digits [2] - Number of digits to leave
/// @return {Number}
@function to-fixed($float, $digits: 2) {
$sass-precision: 5;

@if $digits > $sass-precision {
@warn "Sass sets default precision to #{$sass-precision} digits, and there is no way to change that for now."
+ "The returned number will have #{$sass-precision} digits, even if you asked for `#{$digits}`."
+ "See https://github.com/sass/sass/issues/1122 for further informations.";
}

$pow: pow(10, $digits);
@return round($float * $pow) / $pow;
}

Обратите внимание, что Sass имеет стандартную точность по 5 цифр, и на сегодняшний день нет возможности настроить ее. Из-за этого Sass не может вычислить число с более чем 5 цифрами, независимо от числа, указанного функции как$ цифр.

Кроме того, для этой функции требуется функцияpow, которая не является родной с Sass (пока). Он существует в Compass, но если вы не используете Compass или любую другую библиотеку, которая его предоставляет, вам может понадобиться ваша функцияpow. К счастью, это довольно просто реализовать:

/// Power function
/// @param {Number} $x
/// @param {Number} $n
/// @return {Number}
@function pow($x, $n) {
$ret: 1;

@if $n >= 0 {
@for $i from 1 through $n {
$ret: $ret * $x;
}
} @else {
@for $i from $n to 0 {
$ret: $ret / $x;
}
}

@return $ret;
}