Home > OS >  Convert decimals to number and fraction
Convert decimals to number and fraction

Time:09-12

How can I convert decimal answers, e.g. 3353/6 into 558 5/6?

fractions(3353/6) gets me 558.8333 but not in the fraction term. Is there any in-built function for this purpose?

CodePudding user response:

This function does the basic calculation you need:

nicefrac <- function(x) {
   f <- attr(MASS::fractions(x), "fracs") ## extract string representation
   s <- as.numeric(strsplit(f, "/")[[1]])
   res <- c(whole = s[1] %/% s[2], num = s[1] %% s[2], denom = s[2])
   res
}
x <- 3353/6
nicefrac(x)
## whole   num denom 
##   558     5     6 

Depending on how you want to print/represent this, you could (1) leave it as-is; (2) use sprintf("%d %d/%d", nicefrac[1], nicefrac[2], nicefrac[3]) to convert to a string representation; (3) write a little S3 class with a print method that does what you want (modifying MASS:::print.fractions).

  • Related