RJSONIO 舍入错误
RJSONIO rounding error
我对 R 中 RJSONIO 包中的 toJSON 函数有疑问。从数据框中读取值时似乎四舍五入。
我想了解这是 R 中的错误还是更深层次的问题。
这是一个可重现的例子:
sal <- structure(list(a = c(1250.00, 1250.04, 1250.08, 1250.12, 1250.16, 1250.2, 1250.24),
b = c(1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36)),
.Names = c("a", "b"), row.names = c(NA, 26L), class = "data.frame")
当我从 RJSONIO 运行 到 JSON 函数时:
library(RJSONIO)
RJSONIO::toJSON(sal)
[1] "{\n \"a\": [ 1250, 1250, 1250.1, 1250.1, 1250.2, 1250.2, 1250.2 ],\n\"b\": [ 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36 ] \n}"
为了比较,我使用 rjson 中的 toJSON 函数得到了这个结果:
library(rjson)
rjson::toJSON(sal)
[1] "{\"a\":[1250,1250.04,1250.08,1250.12,1250.16,1250.2,1250.24],\"b\":[1,1.06,1.12,1.18,1.24,1.3,1.36]}"
RJSONIO 包似乎对值进行了四舍五入。例如 1250.04 四舍五入为 1250。
这是我的相关sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: i686-pc-linux-gnu (32-bit)
Running under: Ubuntu 14.10
other attached packages:
[1] rjson_0.2.15 RJSONIO_1.3-0
谁能告诉我为什么会这样?
在 RJSONIO:toJSON
中有一个 digits
参数
library(RJSONIO)
toJSON(sal, digits = 6)
[1] "{\n \"a\": [ 1250, 1250.04, 1250.08, 1250.12, 1250.16, 1250.2, 1250.24 ],\n\"b\": [ 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36 ] \n}
我对 R 中 RJSONIO 包中的 toJSON 函数有疑问。从数据框中读取值时似乎四舍五入。
我想了解这是 R 中的错误还是更深层次的问题。
这是一个可重现的例子:
sal <- structure(list(a = c(1250.00, 1250.04, 1250.08, 1250.12, 1250.16, 1250.2, 1250.24),
b = c(1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36)),
.Names = c("a", "b"), row.names = c(NA, 26L), class = "data.frame")
当我从 RJSONIO 运行 到 JSON 函数时:
library(RJSONIO)
RJSONIO::toJSON(sal)
[1] "{\n \"a\": [ 1250, 1250, 1250.1, 1250.1, 1250.2, 1250.2, 1250.2 ],\n\"b\": [ 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36 ] \n}"
为了比较,我使用 rjson 中的 toJSON 函数得到了这个结果:
library(rjson)
rjson::toJSON(sal)
[1] "{\"a\":[1250,1250.04,1250.08,1250.12,1250.16,1250.2,1250.24],\"b\":[1,1.06,1.12,1.18,1.24,1.3,1.36]}"
RJSONIO 包似乎对值进行了四舍五入。例如 1250.04 四舍五入为 1250。
这是我的相关sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: i686-pc-linux-gnu (32-bit)
Running under: Ubuntu 14.10
other attached packages:
[1] rjson_0.2.15 RJSONIO_1.3-0
谁能告诉我为什么会这样?
在 RJSONIO:toJSON
digits
参数
library(RJSONIO)
toJSON(sal, digits = 6)
[1] "{\n \"a\": [ 1250, 1250.04, 1250.08, 1250.12, 1250.16, 1250.2, 1250.24 ],\n\"b\": [ 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36 ] \n}