Знам за основните типове данни и че плаващите типове (float,double) не могат да съдържат точно някои числа.
При пренасянето на някакъв код от Matlab към Python (Numpy) обаче открих някои значителни разлики в изчисленията и мисля, че се връща към прецизността.
Вземете следния код, z-нормализиращ 500-мерен вектор, като само първите два елемента имат ненулева стойност.
Matlab:
Z = repmat(0,500,1); Z(1)=3;Z(2)=1;
Za = (Z-repmat(mean(Z),500,1)) ./ repmat(std(Z),500,1);
Za(1)
>>> 21.1694
Python:
from numpy import zeros,mean,std
Z = zeros((500,))
Z[0] = 3
Z[1] = 1
Za = (Z - mean(Z)) / std(Z)
print Za[0]
>>> 21.1905669677
Освен че форматирането показва малко повече цифри в Python, има огромна разлика (imho), повече от 0,02
И Python, и Matlab използват 64-битов тип данни (afaik). Python използва 'numpy.float64', а Matlab 'double'.
Защо разликата е толкова голяма? Кое е по-правилно?