Remediați un număr la N cifre - CSS-Tricks

Anonim

Când aveți de-a face cu numere în JavaScript sau în orice alt limbaj de programare, există o modalitate de a tăia un număr după ncifre. Din păcate, nu există o astfel de funcție în Sass. Cu toate acestea, de exemplu, problemele de rotunjire și precizie se întâmplă atunci când se tratează sisteme de rețea bazate pe procente.

Iată o implementare Sass a 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; )

Rețineți că Sass are o precizie implicită de 5 cifre și nu există nicio modalitate de a o configura de astăzi. Din acest motiv, nu este posibil ca Sass pentru a calcula un număr cu mai mult de 5 cifre, indiferent de numărul dat la funcția ca $digits.

De asemenea, această funcție necesită o powfuncție care nu vine nativă cu Sass (încă). Există în Compass, dar dacă nu utilizați Compass sau orice altă bibliotecă care o oferă, este posibil să aveți nevoie de propria powfuncție. Din fericire, este destul de ușor de implementat:

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