我从MySQL表读取以DECIMAL格式存储的数据。我想对R中的这些数字进行计算。

我曾经使用as.numeric()将它们转换为数字表示形式,但是文档中说:


数字等于双精度(实数)。


但是R中是否还有数据类型Decimal? (没有舍入错误的数据类型,...)

以下是有关舍入错误的简单示例:

numbersStrings = c("0.1", "0.9")
numbersNumeric = as.numeric(numbersStrings)
numbersMirror  = c(numbersNumeric, 1-numbersNumeric)

str(numbersMirror)

numbersMirror
unique(numbersMirror)  # has two times 0.1 ...

sprintf("%.25f", numbersMirror)
sprintf("%.25f", unique(numbersMirror))  # ... because there was a rounding error

最佳答案

您可以创建自己的:

d <- structure( list(i=589L,exp=2L), class="decimal" )
print.decimal <- function( x, ...) print( x$i * 10^(-x$exp) )
> d
[1] 5.89


实际上,某些大型软件包也可能适用于此,因为它们使用类似的表示法...。

07-24 09:52