如何格式化数字来控制指数部分

时间:2014-07-05 00:12:13

标签: r

考虑以下代码,

x <- 1000 * 1.23
x

返回1230

format(x, scientific=TRUE)

返回1.23e + 03

但如果我有

y <- 10000 * 1.23
y

返回12300

format(y, scientific=TRUE)

返回1.23e + 04

如何格式化y值以便控制指数?

我希望y表达为12.3e + 03?

1 个答案:

答案 0 :(得分:2)

R和大多数编程语言只支持normalized scientific notation。当然,你总是可以自己动手:

scientific <- function(x, exponent = 3) { 
  opts <- options(scipen = 20); on.exit(options(opts))
  sprintf("%se%s%02d", x / 10^exponent, if (exponent >= 0) '+' else '-', abs(exponent)) 
}

实施例

cat(scientific(12300, 4)) # 1.23e+04
cat(scientific(12300, 3)) # 12.3e+03