Запутался в очень простом тесте "==" - PullRequest
0 голосов
/ 01 апреля 2020

Как это возможно?

> a=TC_df$temp[561]
> a
[1] 15.6
> a==15.6
[1] FALSE
> a=="15.6"
[1] TRUE
> class(a)
[1] "numeric"

1 Ответ

1 голос
/ 01 апреля 2020

Вы сравниваете число со строкой с оператором ==. Вместо этого используйте identical.

Начните с:

> a=15.60000000000001
> a
[1] 15.6
> a=="15.6"
[1] TRUE
> a==15.6
[1] FALSE

Тип такого числа в вашем случае хранится в переменной a.

options(digits...) управляет количеством цифр для печати при печати чисел c. Теперь установите количество цифр для печати 16:

> options(digits=16)
> a
[1] 15.60000000000001
> toString(a)
[1] "15.6"

Вы видите, что случилось? identical не страдает от этой проблемы.

...