我在字符数组中的 JSON 中有以下数字:
[1544018118438041139,162.0,38.0,0.023529414,1.0,2131230815,1]
library(jsonlite)
fromJSON(
'[1544018118438041139,162.0,38.0,0.023529414,1.0,2131230815,1]'
)
返回:
[1] 1544018118438041088.000000000000000000000
162.000000000000000000000 38.000000000000000000000 [4] 0.023529413999999998497
1.000000000000000000000 2131230815.000000000000000000000 [7] 1.000000000000000000000
我希望它返回正确的确切时间(大数:1544018118438041139)
请告知如何使其工作。
最佳答案
这似乎是 R 本身固有的精度限制。考虑:
x <- 1544018118438041139
as.character(x)
[1] "1544018118438041088"
所以,我不确定
jsonlite
包负责此舍入错误。根据@Konrad 评论,这是 IEEE 数据类型的精度限制。如果您只想保留原始号码中的数字,则有一种解决方法。您可以将数据视为字符串:
'["1544018118438041139",162.0,38.0,0.023529414,1.0,2131230815,1]'
然后,大概
jsonlite
会将“数字”作为字符串读取,而不会产生任何精度问题。但是,如果您决定在 R 中转换为数字并用它进行数学运算,那么您仍然会遇到问题。
关于r - 19 位数字不会像在 R 中那样被解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53725749/