Как показать только два десятичных знака без округления - PullRequest
2 голосов
/ 24 октября 2019

Для значения, такого как 0.999942062, я хотел бы показать это значение как 0.99 без округления до 1. Для этого я попробовал следующие функции:

x <- 0.999942062
round(x, 2)
formatC(x, 2)
sprintf(x, fmt = '%#.2f')

Все они приводят к 1. Знаете ли выкак напечатать как 0,99?

Ответы [ 4 ]

2 голосов
/ 24 октября 2019

Можно заранее использовать substr(), преобразованное в "character".

substr(as.character(0.999942062), 1, 4)
# [1] "0.99"
1 голос
/ 24 октября 2019

Используйте trunc(x * 10^n) / 10^n, так как вы хотите просто обрезать свой номер (фактически округляя его до 0)

также floor(x * 10^n) / 10^n архивирует то же самое для положительных чисел

Редактировать :

изменилось floor и trunc использование, поскольку я запомнил их неправильно, как @ Сотос и @ Роланд указал

0 голосов
/ 24 октября 2019
x = c(0.999942062, 20)
gsub("(.*)(\\.)(.{2}).*", "\\1\\2\\3", x)
#[1] "0.99" "20"  
0 голосов
/ 24 октября 2019

если ваше число может иметь различное количество цифр слева от десятичной запятой, вы захотите использовать regexpr внутри substr после преобразования в символ, чтобы найти десятичную точку, а затем добавить две цифры в конец. Вот так:

substr(as.character(10.999462), 1, regexpr("\\.", as.character(10.999462)) + 2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...