Wpis z mikrobloga

#python #programowanie
Mam pytanie dlaczego taki kod
N=int(n/10) nie działa tak samo dla wszystkich liczb, tzn. dla większości obcina ostatnią cyfrę, ale dla niektórych dużych liczb zmienia także przedostatnia np dla:
922434527229713388 to powinno być
92243452722971338, a jest
92243452722971344
  • 11
  • Odpowiedz
  • 4
@Faynem jak robisz coś w jakimkolwiek języku na floatach, to zawsze zakładaj, że liczby po 3-4 miejscu po przecinku są randomowe.
  • Odpowiedz
@Movet: @filozof900: @Dethspike: bardzo dziękuję za wszystkie odpowiedzi.

Generalnie robię zadanie z Codewars, w którym mam zrobić sumę wszystkich cyfr, da się jakoś inaczej, w prosty sposób "wyłuskać" pojedynczą cyfrę z inta?
  • Odpowiedz
@Faynem: Jak dobrze pamietam to mozesz wykorzystac operator "%" do wyluskania kazdej pojedynczej cyfry. Nie pamietam juz jak bardzo kosztowna jest ta operacja ale pewnie szybsza niz zmiana na str.
  • Odpowiedz
@Dethspike: tylko że korzystam wlasnie z n%10, i potem dzielę przez 10 żeby znów sprawdzić tylko ostatnia cyfrę, tylko przy tym dzieleniu wychodzi błąd, wyjaśnienie jest wyżej. Mogę to zmienić na n%10^ i dopiero to dzielić przez wielokrotność 10 i powinno zadziałać, bo wtedy zaokrąglenie będzie na już nieistotnych pozycjach.

W poście chodziło mi głównie o to żeby się dowiedzieć dlaczego są te błędy. Wiedziałem o tym że w operacjach zmiennoprzecinkowych
  • Odpowiedz