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

    [C]Problema approssimazione

    Ragazzi ho un problema...
    Ho definito la seguente funzione

    codice:
    double troncaF(double x,int decimali)
    {
    	char temp[10];
    
    	switch (decimali){
    	
    		case 0: {
    					sprintf(temp,"%.0f",x);
    					return atof(temp);
    					
    				};break;
    		case 1:{
    					sprintf(temp,"%.1f",x);
    					return atof(temp);
    				};break;
    		case 2:{
    					sprintf(temp,"%.2f",x);
    					return atof(temp);
    				};break;
    		case 3:{
    					sprintf(temp,"%.3f",x);
    					return atof(temp);
    				};break;
    		default:{
    					sprintf(temp,"%f",x);
    					return atof(temp);
    				};	
    	}
    
    	//free(temp);
    			
    }
    e quando vado a fare la seguente stampa

    printf("PROVA = %f",troncaF(0.15,1));

    mi aspetterei 0.2 ed invece visualizzo 0.1

    invece se faccio

    printf("PROVA = %f",troncaF(0.16,1));

    visualizzo correttamente 0.2

    come posso ovviare la problema???
    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La funzione potrebbe essere semplicemente

    codice:
    #include <math.h>
    
    double func(double x, int decimali)
    {
       return floor(x*pow(10, decimali)+0.5)/pow(10, decimali);
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    grazie mille oregon,
    sei stato gentilissimo come al solito

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.