Semasa berurusan dengan nombor dalam JavaScript atau bahasa pengaturcaraan lain, ada cara untuk memangkas angka setelah n
digit. Malangnya, tidak ada fungsi seperti itu di Sass. Namun, masalah pembulatan dan ketepatan memang berlaku ketika berhadapan dengan sistem grid berdasarkan peratusan.
Berikut adalah pelaksanaan 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; )
Perhatikan bahawa Sass mempunyai ketepatan lalai 5 digit, dan tidak ada cara untuk mengkonfigurasinya mulai hari ini. Oleh kerana itu, Sass tidak dapat menghitung nombor dengan lebih dari 5 digit, tidak kira nombor yang diberikan untuk fungsi tersebut $digits
.
Juga, fungsi ini memerlukan pow
fungsi yang tidak berasal dari Sass (belum). Ia ada di Kompas, tetapi jika anda tidak menggunakan Kompas atau pustaka lain yang menyediakannya, anda mungkin memerlukan pow
fungsi anda sendiri . Nasib baik, ia cukup mudah dilaksanakan:
/// 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; )