Newsgroup: it.comp.lang.javascript
Titolo: Round in Javascripts e in VBA

Mi serviva l'arrotondamento alla prima cifra decimale e ho usato la funzione
in JS che sta sotto.
Funziona perfettamente,
fino a quando però mi sono accorto che la stessa funzione Round del VBA si
comportava in alcuni casi diversamente.
(Il mio lavoro si trattava di scambiare dati tra excel e pagina web).
Il problema è sorto nel caso:
1.05 in js mi da 1.1
mentre
1.05 in vba round mi dà 1,0
Come posso risolvere il problema.
Grazie
// ############### Funzione per arrotondare ad un certo numero di decimali
###############
function round(number,X)
{
    X = (!X ? 2 : X);
    return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

 1.05 in vba round mi dà 1,0
Il round di VBS (non VBA, ma suppongo siano simili) arrotonda i numeri 
con la virgola, restituendoti un numero cmq intero.
La funzione in JS no.. per questo si comporta in modo differente.
La soluzione c'e', ma prima si deve capire cos'e' che realmente vuoi 
ottenere.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 ottenere.
Voglio una funzione javascript che mi permette di arrotondare tutto i numeri
e nel caso particolare
1.05 mi ridia 1,0 cioč 1 e non 1.1 come fa adesso.
Grazie

 1.05 mi ridia 1,0 cioč 1 e non 1.1 come fa adesso.
La domanda e': Vuoi quindi ottenere un numero INTERO?
1.05 -> 1
2.67 -> 3
etc..
oppure cos'altro?


 2.67 -> 3
no, voglio una funzione JS che mi arrotonda anche i decimali, ma nel caso di
5 finale mi arrotonda per difetto non per eccesso come fa ora.
Cmq in excel lavoro in VBA non VBS (anche se un po' simili).
Thanks

 ma nel caso di 5 finale mi arrotonda per difetto non per eccesso come fa ora.
Ma e' concettualmente sbagliato, IMVHO, arrontondare il .5 per difetto 
(infatti anche VB arrotonda 1.5 a 2).
Ho testato anche il metodo "toFixed()" (presente in JScript dalla vers. 
5.5 in poi), ma da' il solito risultato (1.05 -> 1.1).. Quindi anche 
nativamente questo e' il risultato corretto.
Se tu vuoi ottenere qualcosa di diverso, devi falsare i risultati.
(ad esempio, sottrarre 1/Math.pow(10,X) al numero ottenuto con 
number*Math.pow(10,X)
Ti conviene?
 Non so con che criterio 1.05 e' considerato da VB 1.0, visto che  
"generalmente" non arrotonda per difetto.


 (infatti anche VB arrotonda 1.5 a 2).
Magari c'entra ancora il famoso problema di arrotondamento binario etc 
etc di cui si parlo' tempo fa, annoso bug di JavaScript
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO e metti un .

 etc di cui si parlo' tempo fa, annoso bug di JavaScript
Aridaje.. e non e' un bug. Soprattutto, non di JS.
Te lo disse anche Neo, no? Seguito poco il thread, eh? :P


 Te lo disse anche Neo, no? Seguito poco il thread, eh? :P
Ah gia'... non me ne ricordavo :-)))
Beh, dopo 12 ore quasi passate davanti all'editor per un articolo che mi 
ero dimenticato devo consegnare domani... :-)
