Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Python: de ce x/y da valoare gresita?
Last Updated: Oct 21 2018 08:41, Started by
alerta
, Oct 07 2018 01:23
·
0
#1
Posted 07 October 2018 - 01:23
Am rulat un fisier *.py continand exact urmatorul cod
x = 15 x1 = 15.0 y = 4 print(x/y) print(x1/y)in Python versiunea 2.7.15rc1, asa cum este instalata de Ubuntu 18.04.1 LTS. Rezultatul afisat pe ecran spune, inexplicabil, ca 15/4 = 3, in vreme ce 15.0/4 da rezultatul corect 3.75. Insist, fisierul *.py executat a continut exact codul de deasupra, nimic in plus, nimic in minus. Codul a fost scris cu gedit versiunea 3.28.1. Conform tuturor manualelor si tutorialelor consultate, operatia 15/4 este impartirea reala (cu rezultat 3.75) si nu impartirea intreaga //, chiar daca eu nu dau nicio indicatie suplimentara prin scrierea 15.0 a numaratorului. Orice alt exemplu de aceeasi natura m-a condus la acelasi rezultat "nepermis". Are cineva o explicatie certa in materie? Este cunoscut vreun neajuns al versiunii Python folosite? Multumesc! Edited by alerta, 07 October 2018 - 01:26. |
#2
Posted 07 October 2018 - 01:37
Quote
Rezultatul afisat pe ecran spune, inexplicabil, ca 15/4 = 3, in vreme ce 15.0/4 da rezultatul corect 3.75. Edited by CrocodiluMereuVesel, 07 October 2018 - 01:37. |
#3
Posted 07 October 2018 - 02:29
operatii pe numere intregi
operatii pe numere reale Quote Este cunoscut vreun neajuns al versiunii Python folosite? Multumesc! Edited by MarianG, 07 October 2018 - 02:40. |
#4
Posted 07 October 2018 - 02:50
CrocodiluMereuVesel, on 07 octombrie 2018 - 01:37, said:
Asa este in orice limbaj de programare si asa este si corect.De ce ? Puna mana pe carte si nu mai inrteba pe altii sa faca munca in locul tau. MarianG, on 07 octombrie 2018 - 02:29, said:
operatii pe numere intregi operatii pe numere reale manualul (pentru versiunea de python) ce spune? |
#5
Posted 07 October 2018 - 03:17
https://www.python.o.../peps/pep-0238/
from __future__ import division In Python 2.7: By default, division operator will return integer output. |
#6
Posted 07 October 2018 - 07:50
#7
Posted 07 October 2018 - 10:41
Nu mi-am imaginat ca Python a folosit pentru operatorul / o definitie in dezacord cu definitia consacrata de limbaje ca C. De altfel, chiar citatul dat ca raspuns deasupra arata ca definitia Python era in dezacord nu numai cu limbajul C, ci si cu propriul sau principiu al nedeclararii tipului de variabila (reala sau intreaga) cata vreme initializarea cu numarul 15 conducea la un alt rezultat decat initializarea cu acelasi numar 15, insa scris sub forma 15.0. Este banal de observat ca ininitializarea cu 15.0 era o declaratie de tip a variabilei, iar, prin efectele sale de calcul, aceasta declaratie de tip era absolut esentiala in Python. Nu sunt programator, insa aici a existat cu siguranta o inadvertenta chiar si in raport cu propriile principii ale Python. Chiar nu mi-am imaginat o asemenea situatie si este prea ieftin sa se suspecteze ca am inceput primele contacte cu Python folosind manuale care ar mentiona schimbarea masiva din definitia operatorului / ; nu va exista o polemica pe tema asta. Dar informatia putea fi data si simplu, de la bun inceput: "Distributia Python instalata de Ubuntu este depasita si, la timpul acelei distributii, Python folosea o alta definitie a operatorului / ". Era greu sa se inchida topicul atat de natural si rapid? Sigur ca era greu, pentru expertii setosi sa lapideze nou venitii pe forum.
|
#8
Posted 07 October 2018 - 10:45
Stati sa vedeti nebunii cu float chiar la chestiile care par banale:
>>> a = 1 - 0.9 >>> print a 0.1 >>> b = 10*a >>> print b 1.0 >>> print int(b) 0 |
#9
Posted 07 October 2018 - 11:24
#10
Posted 07 October 2018 - 11:31
|
#11
Posted 07 October 2018 - 16:41
Nu inteleg care e dilema. Daca lucrezi cu numere intregi, rezultatul e tot in numere intregi. Imi scapa mie ceva ?
|
#12
Posted 21 October 2018 - 08:41
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users