如何在R中将double转换为整数?

use*_*197 14 r

我的问题是:假设您已经计算出一个算法,该算法给出了迭代次数,并且您希望打印出迭代次数.但输出总是很多小数位,如下所示:

64.00000000
Run Code Online (Sandbox Code Playgroud)

是否可以通过在R中进行类型转换来获取整数?你会怎么做?

flo*_*del 7

而不是尝试将输出转换为整数,找出它为什么不是一个整数,并在那里修复它.

您是否将其初始化为整数,例如num.iterations <- 0L或者num.iterations <- integer(1)您是否犯了将其设置为0(数字)的错误?

当你增加它时,你添加1(数字)还是1L(整数)?

如果您不确定,请查看代码并使用该class函数检查变量的类型.

修复根目录下的问题可以为您节省很多麻烦.它还可以使您的代码更高效,因为许多操作在整数上比数字更快(例如).


42-*_*42- 6

在强制转换为整数模式时有一些问题.据推测,你在某种结构中有各种各样的数字.如果使用矩阵,则打印例程将以相同的精度显示所有数字.如果您使用算术过程计算了此结果,则实际上该值可能小于64位.

> 64.00000000-.00000099999
[1] 64
> 64.00000000-.0000099999
[1] 63.99999
Run Code Online (Sandbox Code Playgroud)

因此,假设您希望所有结构中的所有值都是其中的一部分,以整数形式显示,最安全的是:

round(64.000000, 0)
Run Code Online (Sandbox Code Playgroud)

......因为这可能发生,否则.

> as.integer(64.00000000-.00000000009)
[1] 63
Run Code Online (Sandbox Code Playgroud)

另一个问题是整数的值范围远小于浮点数的范围.


ema*_*ele 6

该函数as.integer()将数字截断为 0 阶,因此您必须添加 0.5 以获得适当的近似值

dd<-64.00000000
as.integer(dd+0.5)
Run Code Online (Sandbox Code Playgroud)