numeri decimali
buon giorno tutti!
ho un proble che non risco risolvere, potreste aiuntarmi?
ecco il codice:
vorrei avere sievert con 4 numeri dopo la virgola, ma continua darmi solo la prima cifra...
sul monitor seriale ottengo questo:
312cpm 2usv/h
288cpm 1usv/h
304cpm 2usv/h
260cpm 1usv/h
244cpm 1usv/h
340cpm 2usv/h
cosa sto sbagliando? anche se scrivo: serial.print(3344/838823, 3); mi da solo la prima cifra...
grazie mille in anticipo!
ho un proble che non risco risolvere, potreste aiuntarmi?
ecco il codice:
code: [select]
#include <spi.h>
#define log_period 15000 //logging period in milliseconds, recommended value 15000-60000.
#define max_period 60000 //maximum logging period without modifying sketch
unsigned long counts; //variable gm tube events
unsigned long cpm; //variable cpm
unsigned int multiplier; //variable calculation cpm in sketch
unsigned long previousmillis; //variable time measurement
void tube_impulse(){ //subprocedure capturing events geiger kit
counts++;
}
void setup(){ //setup subprocedure
counts = 0;
cpm = 0;
multiplier = max_period / log_period; //calculating multiplier, depend on log period
serial.begin(9600);
attachinterrupt(0, tube_impulse, falling); //define external interrupts
}
void loop(){ //main cycle
unsigned long currentmillis = millis();
if(currentmillis - previousmillis > log_period){
previousmillis = currentmillis;
cpm = counts * multiplier;
serial.print(cpm);
serial.print("cpm ");
serial.print(cpm/151, 4);// questo non funge...
serial.println("usv/h");
counts = 0;
}
}
vorrei avere sievert con 4 numeri dopo la virgola, ma continua darmi solo la prima cifra...
sul monitor seriale ottengo questo:
312cpm 2usv/h
288cpm 1usv/h
304cpm 2usv/h
260cpm 1usv/h
244cpm 1usv/h
340cpm 2usv/h
cosa sto sbagliando? anche se scrivo: serial.print(3344/838823, 3); mi da solo la prima cifra...
grazie mille in anticipo!
e' semplice: essendo la variabile cpm intera, la sua divisione per l'intero 151 restituisce un intero.
se dividi, invece, per 151.0, il risultato sarà un float.
nella prova che hai fatto sostituisci 838823 con 838823.0 e vedrai la differenza.
se dividi, invece, per 151.0, il risultato sarà un float.
nella prova che hai fatto sostituisci 838823 con 838823.0 e vedrai la differenza.
Arduino Forum > International > Italiano > Generale (Moderator: leo72) > numeri decimali
arduino
Comments
Post a Comment