Corrigir um número para N dígitos - CSS-Tricks

Anonim

Ao lidar com números em JavaScript ou qualquer outra linguagem de programação, existe uma maneira de truncar um número após os ndígitos. Infelizmente, essa função não existe no Sass. Ainda assim, problemas de arredondamento e precisão acontecem ao lidar com sistemas de grade baseados em porcentagem, por exemplo.

Aqui está uma implementação Sass de toFixed():

/// 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; )

Observe que o Sass tem uma precisão padrão de 5 dígitos e não há como configurá-lo a partir de hoje. Por causa disso, não é possível para Sass calcular um número com mais de 5 dígitos, não importa o número dado à função como $digits.

Além disso, esta função requer uma powfunção que não vem nativa com Sass (ainda). Ele existe no Compass, mas se você não usa o Compass ou qualquer outra biblioteca que o forneça, você pode precisar de sua própria powfunção. Felizmente, é muito fácil de implementar:

/// 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; )