Ответ 1
Matlab использует 64-битное представление с плавающей запятой по умолчанию для чисел. У них есть 16-значная точность базы-10 (более или менее), и ваши цифры, похоже, превышают это.
Используйте что-то вроде uint64
для хранения ваших номеров:
> test = [uint64(33777100285870080); uint64(33777100285870082)];
> disp(test(1));
33777100285870080
> disp(test(2));
33777100285870082
Это действительно ошибка округления, а не ошибка отображения. Чтобы получить правильные строки для вывода, используйте int2str
, потому что, опять же, num2str
использует 64-битное представление с плавающей запятой и имеет ошибки округления в этот случай.