Discuție Modul:Formatnum

Ultimul comentariu: acum 5 ani de Strainu în subiectul Formatarea numerelor mari

Presupuneri pentru cazurile ambigue

modificare

Un singur separator

modificare

În prezent, numerele cu exact un separator de un anume tip ( adică NN,NNN sau NN.NNN) sunt interpretate de cod ca având separator zecimal. Având în vedere că numerele venite de la Wikidata au o precizie de exact 14 zecimale (deci nu se pot confunda cf. algoritmului propus), ar fi preferabil poate ca în cazul în care după separator sunt exact 3 cifre și înainte sunt mai puțin de 4, să considerăm separatorul ca separator de mii. Sigur că asta ar da un format greșit în cazul în care scrii 12,345 t dorind să scrii 12345 kg, dar cred că aceste cazuri sunt mai rare și pot fi și corectate ușor.--Strainu (دسستي‎1 septembrie 2017 13:45 (EEST)Răspunde

  • Dacă este vorba de formatarea numerelor de la Wikidata nu cred că trebuie ca algoritmul să judece ceva. Situația cu separatorul miilor merită să fie presupusă doar la cifrele scrise manual, căci mulți scriu cifrele întregi între o mie și un milion cu punct. Nu este corect, separatorul oficial este spațiul, însă nu poți dezbăra oamenii de obiceiurile lor. Totuși, la ro:wp este puțin probabil că cineva care știe românește va folosi manual separatorii pe dos. Problemele vor apărea doar la copierea cifrelor/tabelelor de pe en:wp, iar neadaptarea lor este imputabilă celui ce a copiat. Nu este cazul să lăsăm algoritmul să decidă pentru fiecare cifră, că atunci chiar iese o babilonie. Nu am înțeles exemplul cu 12,345 t, el este chiar 12345 kg. Nimeni nu scrie manual pe ro:wp 12,245 kg pentru 12345 kg, decât englezii habarniști. --Turbojet 1 septembrie 2017 15:54 (EEST)Răspunde
---Sustin pe Turbo. Zice bine. Asybaris aport 1 septembrie 2017 18:59 (EEST)Răspunde
Modulul acesta nu știe sursa unui număr, el trebuie să funcționeze corect indiferent de input, am menționat Wikidata doar în ideea că în viitor va fi principala sursă de data și e important ca modulul să lucreze corect pentru ea.. Exemplul dat înseamnă că dacă aplic propunerea mea, {{formatnum|12,345}} t ar fi interpretat ca 12345 t, adică 12.345.000 kg. Problema era să determinăm care caz e mai frecvent, cel în care pentru numere de tipul NN.NNN separatorul ar fi de mii sau de zecimale.--Strainu (دسستي‎1 septembrie 2017 20:52 (EEST)Răspunde
Pentru a decide dacă este un separator zecimal sau nu, dacă se pot determina convențiile (că e punct sau virgulă), problema este simplă. Fără a ști convențiile, tratarea cazurilor NN,NNN și NN.NNN pe baze statistice mi se pare o hazardare, cu probabil multe erori nesemnalate de corectat pe urmă. În acest caz aș înclina să se presupună că se folosesc convențiile pentru limba română. În rest, utilizatorul să facă bine să se uite dacă afișarea este corectă, iar dacă nu este să recunoască că el a greșit, nu algoritmul. Oricum, situația NN,NNN (întreg englezesc) i se va părea corectă englezului și după formatare. :) --Turbojet 2 septembrie 2017 12:22 (EEST)Răspunde

Câte un separator de fiecare tip

modificare

Când ai exact un punct și exact o virgulă în parametru, separatorul din dreapta e considerat zecimal, iar cel din stânga separator de mii. Ar trebui să facem ceva special în cazul în care separatorul de mii e folosit incorect? De exemplu: 12.34,56 sau 1234.567,8. Primul e evident greșit, în al doilea virgula ar putea fi folosită ca separator de mii pentru partea zecimală.--Strainu (دسستي‎1 septembrie 2017 13:45 (EEST)Răspunde

  • Separatoare de mii pe partea zecimală diferite de spațiu eu n-am pomenit, deși formatul normalizat este uzual. Însă poate nu știu eu. Dacă sunt mai mult de 2 separatoare dintre care unul este unic, aș considera că acela e separatorul zecimal. Dacă sunt două virgule și trei puncte nu văd cum ar putea decide algoritmul. Odată ce e stabilită poziția separatorului zecimal, aș ignora (elimina) pe toate celelalte și aș formata numărul. Sigur că o greșeală/vandalism poate da peste cap algoritmul, oricât de „șmecher” ar fi el. Schimbarea unei cifre cu alta duce tot la o cifră greșită, exact ca o greșeală neintenționată. --Turbojet 1 septembrie 2017 15:20 (EEST)Răspunde
---Sustin pe Turbo. Zice bine. Asybaris aport 1 septembrie 2017 18:59 (EEST)Răspunde
Folosirea virgulelor e un "workaround" folosit cu {{formatnum:}} în unele limbi, vedeți ultimul exemplu de la fr:Wikipédia:Conventions_concernant_les_nombres#Usage_des_espaces_ins.C3.A9cables. Există deci posibilitatea să primim cu copy-paste și din astea. Cazul cu unul de un fel și mai multe de celălalt fel e tratat corect, așa cum ați sugerat dvs., problema e numai când ai fix un punct și fix o virgulă. Din ce spuneți eu înțeleg că nu merită să-mi bat capul cu asemenea subtilități?--Strainu (دسستي‎1 septembrie 2017 20:47 (EEST)Răspunde
M-am gândit peste noapte și eu văd algoritmul (indiferent de numărul sau tipul separatorilor) în două etape:
1. Număr sintactic corect (într-o convenție sau alta)? NU: eroare.
2. Se poate stabili neambiguu separatorul zecimal? NU: se aplică convenția românească.
--Turbojet 2 septembrie 2017 12:31 (EEST)Răspunde

Formatarea numerelor mari

modificare

Am observat la Problema damelor#Numărarea soluțiilor că numerele foarte mari ajung să fie formatate cu mantisă și exponent. Ar fi o idee ca în loc de formatul NNNE+XX (unde N sunt cifrele mantisei și XX ale exponentului) să scriem NNN × 10XX. —Andreidiscuție 16 martie 2018 16:45 (EET)Răspunde

Dacă nu sunt probleme cu exponenții, ar fi foarte natural. Doar cei din IT știu formatele NNNE+XX și NNND+XX, care provin de la limitările vechilor imprimante. Nici măcar pe calculatoarele de buzunar științifice nu apare cu „E”. --Turbojet  16 martie 2018 18:15 (EET)Răspunde
  Rezolvat. Scuze că am ratat discuția la momentul respectiv.--Strainu (دسستي‎14 iunie 2019 19:08 (EEST)Răspunde
Înapoi la pagina „Formatnum”.