ОС: Win 7 64bit. Матлаб: 2014а, 2015а
Когда я создаю вектор следующим образом:
a = 0.2:0.2:1
Я получил:
a = 0.2000 0.4000 0.6000 0.8000 1.0000
что ожидается. Теперь, когда я хочу увидеть, существует ли 0,6 в моем векторе, я набираю:
a == 0.6
и я получаю: 0 0 0 0 0
find(a == 0.6)
также возвращает Empty matrix: 1-by-0
Это неожиданно. Все остальные значения он находит, а вот для 0.6 есть проблема. Я думаю, что хотя 0.6 создается, на самом деле это 0.6000000000000000001 или что-то подобное, что является проблемой. Вы можете видеть, что это так, по a > 0.6
и получите 0 0 1 1 1
.
1-Во-первых, почему это происходит?
2-Во-вторых, можем ли мы увидеть все значение числа в Matlab, если да, то какая функция или настройка для этого?
Я создал такой же вектор с помощью linspace
, но это тоже не помогло. Я нашел решение этой проблемы, набрав: a = roundn(a, -10)
. Однако я думаю, что такое решение даже не должно быть нужно в первую очередь.
3-Есть ли лучший способ заказать Matlab для получения точных значений?
Спасибо за вашу помощь.
double
не может точно представлять десятичные дроби. - person Ben Voigt   schedule 26.04.2015a = 0.2:0.2:1;
a(3)-0.6
. - person horchler   schedule 26.04.2015