在 R 中,Cut 在 1 到 9 和 0.1 到 0.9 的范围内产生不等间隔

In R, Cut produces unequal intervals for ranges 1 to 9 and 0.1 to 0.9

在下面的例子中,

@ why the interval of the numbers 1 to 9 is cut at 0, 3, 6, 9,
@ while the interval of the numbers 0.1 to 0.9 is cut at 0.1, 0.2, 0.6 and 0.9 @ even if the declarion in both situation is analogous? why?
--- see output

 cbind(
      seq(      from = 1, to = 9, by = 1 ), 
      cut( seq( from = 1, to = 9, by = 1),         breaks = c( 0, 3, 6, 9 ),   include.lowest = TRUE ),
      seq(      from = 0.1, to = 0.9, by = 0.1 ), 
      cut( seq( from = 0.1, to = 0.9, by = 0.1),   breaks = c( 0, 0.3, 0.6, 0.9 ),   include.lowest = TRUE ),
      seq(      from = 0.01, to = 0.09, by = 0.01 ), 
      cut( seq( from = 0.01, to = 0.09, by = 0.01),   breaks = c( 0, 0.03, 0.06, 0.09 ),   include.lowest = TRUE )
      )

输出:

  [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    1  0.1    1 0.01    1
 [2,]    2    1  0.2    1 0.02    1
 [3,]    3    1  0.3    2 0.03    1
 [4,]    4    2  0.4    2 0.04    2
 [5,]    5    2  0.5    2 0.05    2
 [6,]    6    2  0.6    2 0.06    3
 [7,]    7    3  0.7    3 0.07    3
 [8,]    8    3  0.8    3 0.08    3
 [9,]    9    3  0.9    3 0.09    3

@ The problem was outlined [here][1], thanks @Joran. @ I found this work around solution about unequal cut intervals. @ I used the round function in R. By setting the option to 2 digits, did not solved the problem.

options(digits = 2)
cbind(
  seq(      from = 1, to = 9, by = 1 ), 
  cut( seq( from = 1, to = 9, by = 1),          c( 0, 3, 6, 9 ) ),
  seq(      from = 0.1, to = 0.9, by = 0.1 ), 
  cut( seq( from = 0.1, to = 0.9, by = 0.1),    c( 0, 0.3, 0.6, 0.9 )),
  seq(      from = 0.01, to = 0.09, by = 0.01 ), 
  cut( seq( from = 0.01, to = 0.09, by = 0.01),    c( 0, 0.03, 0.06, 0.09 ))
)

基于选项(位数= 2)的不等切割间隔的输出:

  [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    1  0.1    1 0.01    1
 [2,]    2    1  0.2    1 0.02    1
 [3,]    3    1  0.3    2 0.03    1
 [4,]    4    2  0.4    2 0.04    2
 [5,]    5    2  0.5    2 0.05    2
 [6,]    6    2  0.6    2 0.06    3
 [7,]    7    3  0.7    3 0.07    3
 [8,]    8    3  0.8    3 0.08    3
 [9,]    9    3  0.9    3 0.09    3


options(digits = 200)
cbind(
  seq(      from = 1, to = 9, by = 1 ), 
  cut( round(seq( from = 1, to = 9, by = 1), 2),          c( 0, 3, 6, 9 ) ),
  seq(      from = 0.1, to = 0.9, by = 0.1 ), 
  cut( round(seq( from = 0.1, to = 0.9, by = 0.1), 2),    c( 0, 0.3, 0.6, 0.9 )),
  seq(      from = 0.01, to = 0.09, by = 0.01 ), 
  cut( round(seq( from = 0.01, to = 0.09, by = 0.01), 2),    c( 0, 0.03, 0.06, 0.09 ))
)

基于轮函数的等割间隔输出:

      [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    1  0.1    1 0.01    1
 [2,]    2    1  0.2    1 0.02    1
 [3,]    3    1  0.3    1 0.03    1
 [4,]    4    2  0.4    2 0.04    2
 [5,]    5    2  0.5    2 0.05    2
 [6,]    6    2  0.6    2 0.06    2
 [7,]    7    3  0.7    3 0.07    3
 [8,]    8    3  0.8    3 0.08    3
 [9,]    9    3  0.9    3 0.09    3