2012-04-29 2 views
4

Является ли их способ изменить цифру, в которой происходит округление, я бы хотел остановить округление числа, такого как 2.0242914979757085%, до 2.024%. Я хотел бы настроить количество десятичных знаков в выходном CSSОкругление чисел в Sass и регулировка количества десятичных знаков

ответ

9

Из бревен изменения SASS:

Числовая точность чисел в Sass теперь может быть установлен с помощью --precision опции в командной строке. Кроме того, по умолчанию количество цифр точности в выводе Sass теперь можно изменить, установив Sass :: Script :: Number.precision в целое число (по умолчанию - 3). Поскольку это значение теперь можно изменить, постоянная PRECISION в Sass :: Script :: Number устарела. В маловероятном случае, когда вы использовали его в своем коде, вы должны теперь использовать Sass :: Script :: Number.precision_factor.

Это было добавлено в SASS 3.1.8.

+0

я думаю, что я неправильно сформулированное я хочу сохранить 2.024291, но дерзость продолжает округляя его 2,024, я хочу, чтобы остановить что – Lawrence

+0

Я обновил свой ответ соответственно. – Bill

+0

ОК, это похоже на то, что мне нужно, но не уверен, как его использовать. – Lawrence

2

Вы также можете сделать следующее:

@function ceilHundredths($numbers) { 
    $numbers: $numbers * 10000; 

    @if ($numbers < 1) { 
     $numbers: $numbers - 1; 

    } @else { 
     $numbers: $numbers + 1; 
    } 

    @return round($numbers)/ 100#{"%"}; 

} 

.test--regular { 
    margin-left: percentage(-1/3); 
} 

.test { 
    margin-left: ceilHundredths(-1/3); 
} 

.test--regular--2 { 
    margin-left: percentage(1/3); 
} 

.test--2 { 
    margin-left: ceilHundredths(1/3); 
} 
3

Вы можете использовать следующую функцию, которая является незначительное улучшение function created by Takeru Suzuki:

@function decimal-round ($number, $digits: 0, $mode: round) { 
    $n: 1; 
    // $number must be a number 
    @if type-of($number) != number { 
     @warn '#{ $number } is not a number.'; 
     @return $number; 
    } 
    // $digits must be a unitless number 
    @if type-of($digits) != number { 
     @warn '#{ $digits } is not a number.'; 
     @return $number; 
    } @else if not unitless($digits) { 
     @warn '#{ $digits } has a unit.'; 
     @return $number; 
    } 
    @if $digits > 0 { 
     @for $i from 1 through $digits { 
      $n: $n * 10; 
     } 
    } 
    @if $mode == round { 
     @return round($number * $n)/$n; 
    } @else if $mode == ceil { 
     @return ceil($number * $n)/$n; 
    } @else if $mode == floor { 
     @return floor($number * $n)/$n; 
    } @else { 
     @warn '#{ $mode } is undefined keyword.'; 
     @return $number; 
    } 
} 

Выход:

decimal-round(0.333) => 0 
decimal-round(0.333, 1) => 0.3 
decimal-round(0.333, 2) => 0.33 
decimal-round(0.666) => 1 
decimal-round(0.666, 1) => 0.7 
decimal-round(0.666, 2) => 0.67 
4

Быстрый вариант без дополнительных функций ЦИИ было бы умножить число на 1000, а затем вокруг него, а затем разделить на 1000.

round($percent * 1000)/1000; 
Смежные вопросы