ourMELONS/R/logml2String.R
2024-04-08 13:29:03 +02:00

58 lines
1.6 KiB
R

#' @title Logml to string
#' @description Returns a string representation of a logml
#' @param logml input Logml
#' @param leading_zeros_replacement string to replace leading zeros with
#' @return String version of logml
logml2String <- function(logml, leading_zeros_replacement = " ") {
mjono <- rep(" ", 7L)
# Palauttaa logml:n string-esityksen.
if (logml == -Inf) {
mjono[7] <- "-"
return(mjono)
}
if (abs(logml) < 10000) {
# Ei tarvita e-muotoa
mjono[7] <- palautaYks(abs(logml), -1)
mjono[6] <- "."
mjono[5] <- palautaYks(abs(logml), 0)
mjono[4] <- palautaYks(abs(logml), 1)
mjono[3] <- palautaYks(abs(logml), 2)
mjono[2] <- palautaYks(abs(logml), 3)
pointer <- 2
while (mjono[pointer] == "0" && pointer < 7) {
# Removes leading zeros
mjono[pointer] <- leading_zeros_replacement
pointer <- pointer + 1
}
if (logml < 0) {
mjono[pointer - 1] <- "-"
}
} else {
suurinYks <- 4
while (abs(logml) / (10^(suurinYks + 1)) >= 1) {
suurinYks <- suurinYks + 1
}
if (suurinYks < 10) {
mjono[7] <- as.character(suurinYks)
mjono[6] <- "e"
mjono[5] <- palautaYks(abs(logml), suurinYks - 1)
mjono[4] <- "."
mjono[3] <- palautaYks(abs(logml), suurinYks)
if (logml < 0) {
mjono[2] <- "-"
}
} else if (suurinYks >= 10) {
mjono[6:7] <- as.character(suurinYks)
mjono[5] <- "e"
mjono[4] <- palautaYks(abs(logml), suurinYks - 1)
mjono[3] <- "."
mjono[2] <- palautaYks(abs(logml), suurinYks)
if (logml < 0) {
mjono[1] <- "-"
}
}
}
return(mjono)
}