Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Numbers in Software

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Numbers in Software

Avatar for Stefan Kanev

Stefan Kanev

August 24, 2013
Tweet

More Decks by Stefan Kanev

Other Decks in Programming

Transcript

  1. CO

  2. 0.5 + 0.5 + 0.5 + 0.5 + 0.5 +

    0.5 + 0.5 + 0.5 + 0.5 + 0.5 = 5.0 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 0.999999
  3. 0

  4. 24

  5. 0 = 00000 1 = 00001 2 = 00010 3

    = 00011 4 = 00100 5 = 00101 6 = 00110 . = .....
  6. 0 = 00000 1 = 00001 2 = 00010 3

    = 00011 4 = 00100 5 = 00101 6 = 00110 . = .....
  7. 8 битов BigNumber bigits: 5, 12, 7 5x2562 + 12x2561

    + 7x2560 5x65536 + 12x256 + 7 330759
  8. 0, 1, 2, 3, 4, 5, 6, ... 0, 1,

    -1, 2, -2, 3, -3, ... ↕ ↕ ↕ ↕ ↕ ↕ ↕
  9. 5 = 00000101 -5 = 11111011 3 = 00000011 -3

    = 11111101 0 = 00000000 -1 = 11111111
  10. 1 / 3 = ? Ruby: 0 (integer) Python: 0.33333

    (float) Clojure: 1/3 (rational)
  11. 0, 1, 2, 3, 4, ... ..., -1, ..., 0,

    ..., 1/4, ..., 1/2, ..., 1, ..., 2, ....
  12. 1 a 1 b 1 c – – – +

    + 1 z – + + ... a ≠ b ≠ c ≠ ... ≠ z
  13. 0.5 + 0.5 + 0.5 + 0.5 + 0.5 +

    0.5 + 0.5 + 0.5 + 0.5 + 0.5 = 5.0 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 0.999999
  14. Експонента Мантиса Стойност 0 3.14 3.14 x 1 = 3.14

    3 2.71 2.71 x 1000 = 2710 -4 1.5 1.5 x 0.0001 = 0.00015
  15. експонента: -5 — 5 мантиса: 0.00 — 9.99 440 =

    4.40 x 102 0.7 = 7.00 x 10-1 4210 = 4.21 x 103 0.0101 = 1.01 x 10-2 123000 = 1.23 x 105 0.00143 = 1.43 x 10-3 123001 няма представяне 0.00000012 няма представяне 4210 + 0.0101 няма представяне ...въпреки че двете по отделно имат ...ще трябва върне 4210 или 4420
  16. двоично = десетично 0.1 = 0.5 0.01 = 0.25 0.11

    = 0.75 0.001 = 0.125 0.011 = 0.375 0.101 = 0.625 0.111 = 0.875
  17. 0.5 + 0.5 + 0.5 + 0.5 + 0.5 +

    0.5 + 0.5 + 0.5 + 0.5 + 0.5 = 5.0 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 0.999999
  18. Float-а дори не е асоциативен: a = 1234.567 b =

    45.67844 c = 0.0004 (a + b) + c != a + (b + c)
  19. Ако ползвате float за пари: - 0.25, 0.50, 0.75 -

    имате грешки - имате +∞ и -∞ пари - имате отрицателни нули - имате NaN
  20. ?

  21. - система за залози на мачове - всеки влиза в

    системата с Х пари - може да заложи Y пари за мач - цялата сума се разделя пропорционално между позналите - парите в системата са константа
  22. Име Сума Залог Васил 10 1 Кирил 30 2 Радо

    20 1 Андрей 20 3 Стефан 10 1 Веселин 10 3 Радо, Стефан и Васил печелят Общата сума е 100 лв Радо взема 50 лв Васил и Стефан вземат по 25 лв
  23. (a + bi) + (c + di) = = a

    + c + bi + di = = (a + c) + (b + d)i (a + bi)(c + di) = = ac + adi + cbi + bdi2 = = ac - bd + adi + cbi = = (ac - bd) + (ad + cb)i