Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Approssimazione per difetto

    Come posso ottenere in ASP il valore di una approssimazione per difetto?

    Grazie mille!

    Quoque tu Bruto fijo de 'na mignotta?

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    A che decimali?
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  3. #3
    codice:
    <%
    
    numero = "47,58296"
    
    function approssima(byval numero,tipo,decimali)
    	dim intero, decimale
    	
    	if instr(numero,",") <> 0 then
    
    		select case tipo
    			case "difetto"
    				intero = left(numero,instr(numero,",")-1)
    				decimale = left(mid(numero,instr(numero,",")+1,decimali) & string(decimali,"0"),decimali)
    				numero = cdbl(intero & "," & decimale)
    			case "eccesso"
    				intero = left(numero,instr(numero,",")-1)
    				decimale = left(mid(numero,instr(numero,",")+1,decimali+1) & string(decimali,"0"),decimali+1)
    				
    			
    				if not(right(decimale,1) = 0) then decimale = cdbl(decimale) + cdbl((10-right(decimale,1)))
    				
    				decimale = cstr(decimale)
    				decimale = left(decimale,len(decimale)-1)
    				
    				numero = cdbl(intero & "," & decimale)
    			case "auto"
    				numero = formatnumber(numero,decimali)
    		end select
    		
    		approssima = cdbl(numero)
    	
    	else
    	
    		approssima = numero
    	
    	end if
    
    end function
    
    'AUTO = cifra di approssimazione >= 5 eccesso
    '		cifra di approssimazione < 5  difetto
    'ECCESSO = approssima sempre per eccesso (escluso 0)
    'DIFETTO = approssima sempre per difetto
    response.write approssima(numero,"difetto",2)
    
    %>
    piace?
    san imente saluta

    * http://simonecingano.it *

  4. #4
    piccola modifica proposta da kluster

    codice:
    <%
    
    numero = "47,58296"
    
    function approssima(byval numero,tipo,decimali)
    	dim intero, decimale
    
    	numero = replace(cstr(numero),".",",")
    	
    	if instr(numero,",") <> 0 then
    
    		select case tipo
    			case "difetto"
    				intero = left(numero,instr(numero,",")-1)
    				decimale = left(mid(numero,instr(numero,",")+1,decimali) & string(decimali,"0"),decimali)
    				numero = cdbl(intero & "," & decimale)
    			case "eccesso"
    				intero = left(numero,instr(numero,",")-1)
    				decimale = left(mid(numero,instr(numero,",")+1,decimali+1) & string(decimali,"0"),decimali+1)
    				
    			
    				if not(right(decimale,1) = 0) then decimale = cdbl(decimale) + cdbl((10-right(decimale,1)))
    				
    				decimale = cstr(decimale)
    				decimale = left(decimale,len(decimale)-1)
    				
    				numero = cdbl(intero & "," & decimale)
    			case "auto"
    				numero = formatnumber(numero,decimali)
    		end select
    		
    		approssima = cdbl(numero)
    	
    	else
    	
    		approssima = numero
    	
    	end if
    
    end function
    
    'AUTO = cifra di approssimazione >= 5 eccesso
    '		cifra di approssimazione < 5  difetto
    'ECCESSO = approssima sempre per eccesso (escluso 0)
    'DIFETTO = approssima sempre per difetto
    response.write approssima(numero,"difetto",2)
    
    %>
    thanks
    san imente saluta

    * http://simonecingano.it *

  5. #5
    grazie!
    ora ci provo!
    certo che è un bordello però!

    Quoque tu Bruto fijo de 'na mignotta?

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non è detto che non possa esserti sufficiente la round()

    Roby

  7. #7
    Round fa l'arrotonadmento comune,
    se la vuole sempre per diffetto piuttosto fix(numero) o int(numero), dipende come si vuole arrotondare -3,5 (a -3 o a -4?)

    Cmq questo codice può essere utile x scegliere quella giusta

    codice:
    <%
    arrnumber=split("-8.44;-8.50;-8.54;8.44;8.50;8.54",";")
    arrfunction=split("fix(num);int(num);abs(num);round(num);round(num,1);cint(num);clng(num);formatnumber(num,0);formatnumber(num,1)",";")
    for icount1=0 to ubound(arrfunction)
       for icount2=0 to ubound(arrnumber)
          scode=replace(arrfunction(icount1),"(num","("&arrnumber(icount2))
          execute("result="&scode)
          response.write scode&" = "&result&"
    "
       next
       response.write "<hr>"
    next
    %>

  8. #8
    stupendo

    grazie per il chiarimento

    io come al solito a volte vado a cercarmi le vie più folli

    cmq per la richiesta credo sia perfetto il

    FIX()

    ciao
    san imente saluta

    * http://simonecingano.it *

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.