Un tipo di arrotondamento .

ciao

un piccolo problema di cui ho già letto alcuni post, che tuttavia non mi hanno risolto il problema

Ho una funzione di calcolo che mi restituisce

 ...float AMP = 0;
  ...
  AMP = sqrt((float)currentAcc / (float)numSamples) * (50 / 1024.0) ;
  return (AMP);

sono AMPERE, e il valore stampato è per es. "2,34"

Il mio scopo è effettuare un arrotondamento allo 0,05. Quindi i decimali devono assumere valori tipo 0,05; 0,10; 0,15....; 0,95... (tenendo conto che la troncatura a due cifre la eseguo in fase di stampa).

concettualmente è semplice: x = x * 20 -> poi ricavi l'intero x = int (x) --> e infine x = x /20

usando da poco arduino, non conosco bene ancora questi trucchetti e quello che ho provano non funziona, mi riporta sempre 0,00 (con valori intorno a 0,13-0,16).

quindi se io scrivo per esempio (come ho fatto)
AMP = float ( int (AMP*20) /20);

non funziona.

chi mi da una mano?

dr_vagus:
AMP = float ( int (AMP*20) /20);

Quello non è un cast, il si effettua con il tipo tra parentesi es (int). Comunque la logica di cast è fatta al rovescio. Se non hai problemi di arrotondamento del resto (cioè arrotondi sempre per difetto)

float a = 0.05 * (int) (amp / 0.05);

Perfetto.
Mi puoi indicare un link video testo ecc. che spieghi questi aspetti?

il "cast"?

grazie infinite.

qui, ma puoi trovare centinai di guide con una ricerca su google.