Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Number format
#1
Posted 07 September 2018 - 10:24
Salut!
Nu este intrebare chiar de java, dar poate ma puteti ajuta. Vreau sa scriu o functie/metoda rapida care sa parseze un string si sa il transforme intr-un int. Pana acum eu stiu 2 variante: sa iau fiecare caracter din string si sa vad daca e numar etc, sau sa folosesc un number formatter cu Locase, pentru ca si 1.234,00 dar si 1,234.00 sunt intregi, doar ca metoda asta este slow, si mai trebuie sa folosesti si try/catch. Intrebarea mea este: unde gasesc o lista completa per country/region a formaturilor de numere si date, ca sa pot sa rescriu roata? Merci mult! |
#3
Posted 07 September 2018 - 11:38
Nu mă pricep, dar ce vrei tu să faci seamănă cu un Scanner - https://docs.oracle....il/Scanner.html
|
#4
Posted 07 September 2018 - 13:54
Cum vei face diferenta intre 1.251 si 1,251? Ambele pot fi si mii si zecimale, depinde de limba. Daca te legi de cea a sistemului iar nu-i bine, pentru ca poti avea documente scrise in alt format.
Pare destul de greu de generalizat. |
#5
Posted 07 September 2018 - 16:26
sorin147, on 07 septembrie 2018 - 13:54, said:
Cum vei face diferenta intre 1.251 si 1,251? Ambele pot fi si mii si zecimale, depinde de limba. Daca te legi de cea a sistemului iar nu-i bine, pentru ca poti avea documente scrise in alt format. Pare destul de greu de generalizat. |
#6
Posted 07 September 2018 - 16:30
De ce nu vrei sa arunci sau sa prinzi? Daca in fisier ai numere, numere, numere si intr-o celula ai "ana are mere"? Nu vrei sa te asiguri ca nu-ti crapa?
|
#7
Posted 07 September 2018 - 17:45
http://userguide.icu...org/formatparse are tot felul de reguli, disponibil ca API si pentru Java.
piramyd, on 07 septembrie 2018 - 10:24, said:
metoda asta este slow, si mai trebuie sa folosesti si try/catch. Ce intelegi prin slow? |
#8
Posted 07 September 2018 - 17:56
sorin147, on 07 septembrie 2018 - 16:30, said:
De ce nu vrei sa arunci sau sa prinzi? Daca in fisier ai numere, numere, numere si intr-o celula ai "ana are mere"? Nu vrei sa te asiguri ca nu-ti crapa? Un exemplu ar fi sa mai am un parametru 'defaultValue' de tip int, pe care sa il intorc daca nu este integer. Dar fara throw/try/catch. dani.user, on 07 septembrie 2018 - 17:45, said:
http://userguide.icu...org/formatparse are tot felul de reguli, disponibil ca API si pentru Java. Ce intelegi prin slow? Am comparat metoda de a parsa cu number formatter din java, si o metoda de-a mea care doar parsa un intreg, si e cam de 100 de ori mai slow cea din java. Asta daca nu arunca exceptie de parsare. Ideal ar fi sa stiu daca/unde se foloseste virgula, punct etc in functie de Locale, si sa parcurg o singura data string-ul, iar la final sa il fac int, sau nu. That's it. |
#9
Posted 17 September 2018 - 09:54
piramyd, on 07 septembrie 2018 - 17:56, said:
Nu vreau sa fiu nevoit sa prind, si nici sa arunc. Ma asigur ca nu imi crapa in metoda pe care o scriu. Un exemplu ar fi sa mai am un parametru 'defaultValue' de tip int, pe care sa il intorc daca nu este integer. Dar fara throw/try/catch. Merci, o sa ma uit zilele astea. Slow inseamna ca face tot felul de operatii si incarcari pentru o simpla parsare, si mai si foloseste throw/try/catch, ceea ce ingreuneaza rau codul. Am comparat metoda de a parsa cu number formatter din java, si o metoda de-a mea care doar parsa un intreg, si e cam de 100 de ori mai slow cea din java. Asta daca nu arunca exceptie de parsare. Ideal ar fi sa stiu daca/unde se foloseste virgula, punct etc in functie de Locale, si sa parcurg o singura data string-ul, iar la final sa il fac int, sau nu. That's it. try/catch nu e o problema daca parsezi cateva numere. E problema doar daca parsezi informatii tabelare cu zeci de mii de intrari sau mai mult. |
#10
Posted 18 September 2018 - 00:40
Partea de performanta, daca nu ai cerinte stricte nu ar trebui sa te deranjeze
|
|
#11
Posted 18 September 2018 - 10:01
#12
Posted 19 September 2018 - 13:15
Se foloseste Scanner cu useLocale. De aruncat tot o sa arunce InputMismatchException daca nu-i ok inputul, dar aproape tot API-ul oficial arunca ceva(bine, la scanner, treaba ar putea fi mitigata cu verificare gen hasNextDouble sau hasNextInt). Altceva iti faci tu.
Edited by Libertarian, 19 September 2018 - 13:17. |
#13
Posted 20 September 2018 - 16:58
Libertarian, on 19 septembrie 2018 - 13:15, said:
Se foloseste Scanner cu useLocale. De aruncat tot o sa arunce InputMismatchException daca nu-i ok inputul, dar aproape tot API-ul oficial arunca ceva(bine, la scanner, treaba ar putea fi mitigata cu verificare gen hasNextDouble sau hasNextInt). Altceva iti faci tu. |
#14
Posted 21 September 2018 - 08:08
romio79, on 18 septembrie 2018 - 00:40, said:
Partea de performanta, daca nu ai cerinte stricte nu ar trebui sa te deranjeze Si nu prea vreau sa folosesc exceptii, pentru ca: http://java-performa...a-is-very-slow/ https://shipilev.net...al-performance/ CrocodiluMereuVesel, on 18 septembrie 2018 - 10:01, said:
tu nu esti programator, NEXT Alt motiv pentru care nu vreau sa folosesc NumberFormat: https://www.ibm.com/...rmat/index.html Oricum, am cam gasit ce cautam: http://www.localepla...icu/iso639.html |
#15
Posted 21 September 2018 - 09:27
"Speed" nu e o cerinta. Sa fie capabil sa efectueze 1 milion de transformari intr-o secunda pe un core ce ruleaza la 1 GHz e o cerinta. Asadar, care e cerinta adevarata si cat de lent s-a dovedit codul ce arunca exceptii incat nu a trecut baremul? Cand performanta e critica, conteaza foarte mult si datele de intrare si ce informatii/estimari ai despre ele, de exemplu cat % te atepti sa fie valide.
Cand vine vorba de reguli de parsare pentru o multime de culturi, am recomandat biblioteca de mai sus cu un motiv: nu doar ca au stat ei sa colecteze toate acele reguli si sa le implementeze, dar e o biblioteca destul de populara si deci sunt multi care o folosesc => sunt sanse mai mari ca daca ceva e implementat gresit sa observe cineva. |
|
#16
Posted 21 September 2018 - 12:41
CrocodiluMereuVesel, on 20 septembrie 2018 - 16:58, said:
Si daca seful tau ti-ar spune sa faci o astfel de functie fara a folosi alte API-uri ci doar capul tau si primitivele, cum ai face aceasta functie ? piramyd, on 21 septembrie 2018 - 08:08, said:
Adica ai gasit ce aveai oricum in java. Bun asa.
Edited by Libertarian, 21 September 2018 - 12:43. |
#17
Posted 21 September 2018 - 14:12
dani.user, on 21 septembrie 2018 - 09:27, said:
"Speed" nu e o cerinta. Sa fie capabil sa efectueze 1 milion de transformari intr-o secunda pe un core ce ruleaza la 1 GHz e o cerinta. Asadar, care e cerinta adevarata si cat de lent s-a dovedit codul ce arunca exceptii incat nu a trecut baremul? Cand performanta e critica, conteaza foarte mult si datele de intrare si ce informatii/estimari ai despre ele, de exemplu cat % te atepti sa fie valide. Cand vine vorba de reguli de parsare pentru o multime de culturi, am recomandat biblioteca de mai sus cu un motiv: nu doar ca au stat ei sa colecteze toate acele reguli si sa le implementeze, dar e o biblioteca destul de populara si deci sunt multi care o folosesc => sunt sanse mai mari ca daca ceva e implementat gresit sa observe cineva. Nu observasem ca si tu ai postat pagina ICU. Libertarian, on 21 septembrie 2018 - 12:41, said: Asta nu se face la plesneala, trebuie cerinte detaliate. E nevoie de separator de grupuri de 3 cifre? Este ok ca acest separator sa fie utilizat si aiurea precum 1.22.3.444, 5 sau trebuie neaparat sa respecte regula de cate trei grupuri catre dreapta iar primul din stanga 1-3, gen 1.223.444,5? Ce se intampla daca numarul parsat e mai mare decat valoarea maxima tipul de date in care se face conversia? E posibil ca stringul sa cotina si alte caractere la inceput sau sfarsit(cum ar fi indicator de moneda)? Eh, in functie de raspunsurile la aceste intrebari, abordarile sunt diferite, dupa cum vor fi si performantele diferite... in general nu e bine sa reinventezi roata, vezi ce e prin commons math, guava si alte frameworkuri populare... Adica ai gasit ce aveai oricum in java. Bun asa. Merci de raspunsuri, eu sunt lamurit. |
#18
Posted 21 September 2018 - 14:30
As masura cat mai repede ce incarca serverele. Intuitia imi zice ca e foarte putin probabil sa fie de la parsari de numere.
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users