Ошибка округления индексации массива Python в 4-й цифре - PullRequest
0 голосов
/ 28 ноября 2018

Может кто-нибудь объяснить, пожалуйста, разные ошибки округления массива в numpy уже в 4-й значащей цифре?

dt = 0.001
t = np.arange(-10,10,dt)

print(t)
print(t[-1])
print(t[-1:])
print(t[-1:][0])
print("%.7f" %t[-1])

>> [-10.     -9.999  -9.998 ...   9.997   9.998   9.999]
>> 9.998999999988918
>> [9.999]
>> 9.998999999988918
>> 9.9990000

Особенно: почему t[-1] не 0.999?

1 Ответ

0 голосов
/ 28 ноября 2018

Я почти уверен, что это всегда 9.998999999988918 из-за того, как реализован np.arange (строго <= фактическое значение цели).И разница в ваших отпечатках связана с тем, как <em>str реализовано для списков

  • (округлено до 3 цифр после точки),

  • фактическое (полное) значение 9.998999999988918,

  • и десятичная функция округление до 7 цифр (округление от 8-го числа)

...