Я переключался с Matlab на IPython. В IPython, если мы умножим 3.1 на 2.1, следующий результат:Избегание небольших числовых ошибок при использовании IPython
In [297]:
3.1 * 2.1
Out[297]:
6.510000000000001
Существует небольшой ошибки округления. Это не большая проблема, но это немного раздражает. Я предполагаю, что он появился при преобразовании десятичных чисел в двоичные числа и наоборот, правильно?
Однако в Numpy массива, результат правильно:
>>> np.array([3.1 * 2.1])
array([ 6.51])
В Matlab командной строки, а также результат правильно:
>> 3.1 * 2.1
ans =
6.5100
выше ошибка округления в выглядит Python раздражает. Есть ли способ избежать этой ошибки в интерактивном режиме python или в IPython?
Как правило, вам нужно просто использовать библиотеки, если вам нужна точность с плавающей запятой, но лет u может просто вынуть десятичную точку, выполнить умножение, а затем вставить десятичную точку в ваш вывод. Для вашего примера вы бы сделали 31 * 21 = 651, и поскольку вы умножили оба числа на 10, а 10 * 10 равнялись 100, оно становится 6.51 – Natecat
Это не ошибка округления. На дисплее 'ipython' отображается только десятичная точка, чем две другие. – hpaulj
@hpaulj I * будет * называть его округлой ошибкой, так как 3.1 \ * 2.1 действительно равно 6.51 в нормальной математике. Вы правы в том смысле, что разница в внешнем виде между numpy и плаваниями Python не имеет смысла, хотя обе страдают от этой неточности. –