2014-12-10 3 views
-1

Я хочу проверить, является ли серия чисел, умножающая число n целыми числами. Однако, когда я использую функцию seq для разработки этой серии и умножаю n, то, проверяя, является ли она целочисленной последовательностью, я найду что-то неправильно, например, следующий пример. Пожалуйста, помогите мне разобраться в этом вопросе!Как проверить, является ли серия чисел, умножающих число n целыми числами

x <- seq(from=0.001, to=0.015, by=0.001) 
x 
[1] 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.010 0.011 0.012 0.013 0.014 0.015 
n <- 1000 
a = x[9]*n 
a 
[1] 9 
a == 9 
[1] FALSE 
+2

На каком языке вы владеете? Не могли бы вы добавить больше тегов? –

+0

Я бы пометил как обман, но это, вероятно, в 1-й раз, когда кто-то спросил об этом. –

+0

Возможный дубликат [Почему эти цифры не равны?] (Http://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal) – MrFlick

ответ

1

Плавающие математические операции в R могут дать неожиданные результаты в R, как в вашем примере.

Используя код, вы увидите, что существует очень небольшая разница между переменной и 9 (обратите внимание, что точное значение, которое вы видите, может изменяться):

a-9 # yields 1.776357e-15 

Вы можете иметь дело с это, сравнивая разницу с очень малой величиной:

abs(a-9) < 1e-10 # yields TRUE 

Вы найдете сравнить библиотеку полезных

library(compare) 
compare(a,9)  # yields TRUE 
+1

просто указать, что сравнение с плавающей запятой в * любом * Компьютерный язык может быть также удивителен. 'all.equal()' тоже может быть полезен. –

 Смежные вопросы

  • Нет связанных вопросов^_^