Όταν ασχολείστε με αριθμούς σε JavaScript ή οποιαδήποτε άλλη γλώσσα προγραμματισμού, υπάρχει ένας τρόπος να περικόψετε έναν αριθμό μετά από n
ψηφία. Δυστυχώς, δεν υπάρχει τέτοια λειτουργία στο Sass. Ακόμα, ζητήματα στρογγυλοποίησης και ακρίβειας συμβαίνουν όταν αντιμετωπίζουμε για παράδειγμα συστήματα δικτύου βάσει ποσοστού.
Εδώ είναι μια εφαρμογή Sass για 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; )
Σημειώστε ότι το Sass έχει προεπιλεγμένη ακρίβεια 5 ψηφίων και δεν υπάρχει τρόπος να το διαμορφώσετε από σήμερα. Εξαιτίας αυτού, δεν είναι δυνατό για τον Sass να υπολογίσει έναν αριθμό με περισσότερα από 5 ψηφία, ανεξάρτητα από τον αριθμό που δίνεται στη συνάρτηση ως $digits
.
Επίσης, αυτή η συνάρτηση απαιτεί μια pow
συνάρτηση που δεν είναι εγγενής με το Sass (ακόμη). Υπάρχει στην Πυξίδα, αλλά εάν δεν χρησιμοποιείτε την Πυξίδα ή οποιαδήποτε άλλη βιβλιοθήκη που την παρέχει, ίσως χρειαστείτε τη δική σας 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; )