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

    Errore con la funzione floor

    Ho un problema con l'utilizzo della funzione floor, nella stesura di un qualsiasi frammento di codice ogni qualvolta vado a compilare (premetto che sto usando il Devc++) mi da sempre questo errore
    codice:
    [Warning] converting to `int' from `double'
    Potrebbe essere colpa della libreria math.h?
    Ringrazio anticipatamente per le delucidazioni a riguardo

  2. #2
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Succede solo con il compilatore C++ e non con un progetto C.

    in ogni caso.... il prototipo di floor() è:

    double floor (double);

    ergo il valore di ritorno è ancora un double e non un int

    Se fai:

    codice:
    double a,b;
    
    a=7.89;
    b=floor(a);

    non otterrai errore.
    Se invece fai:

    codice:
    double a;
    int b;
    
    a=7.89;
    b=floor(a);
    ottieni il warning da te indicato.

    Per risolvere basta che esegui un cast ad int:
    codice:
    double a;
    int b;
    
    a=7.89;
    b=(int)floor(a);
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  3. #3
    Ti ringrazio, ora funge, quindi si trattava di una conversione da double a int, una sola curiosità: ma è proprio la funzione ad hoc di floor() nel math.h che adopera le variabili double?

  4. #4
    Tutte le funzioni di math.h accettano un double e restituiscono un double.
    La mia prima risposta dopo tante domande

  5. #5
    Ok, thanks a lot

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 © 2024 vBulletin Solutions, Inc. All rights reserved.