Διορθώστε έναν αριθμό σε N ψηφία - CSS-Κόλπα

Anonim

Όταν ασχολείστε με αριθμούς σε 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; )