我在我的R脚本中使用以下表达式,并获得不正确的值。我想知道这是一个错误还是做错了什么。任何帮助将不胜感激。
as.integer(10.7275 * 1e7)
它返回107274999。我期望它返回107275000。如何解决该问题?
答案 0 :(得分:3)
这是由于计算机不准确,带有小数点(如@Suren的评论中所述)。您可以通过以下方法解决它:
as.integer(ceiling(10.7275*1e7))
ceiling(as.integer(10.7275*1e7))
不起作用(它将返回您现在获得的值)。
答案 1 :(得分:-1)
这是一个浮点问题。一种快速的解决方法是使用双精度浮点以提高精度:
as.double(10.7275*1e7) # alternatively as.numeric()
# [1] 107275000
也请参考此floating point post,以获取@Wai Ha Lee评论的浮点数学的更多信息和分辨率