Go Down

Topic: Float to array? (Read 485 times) previous topic - next topic

0miker0

I have a few seven segment leds and I want the temperature ic float displayed. The code is set up so an integer is assigned to each digit.
(working test code)
int a=1;
int b=2;
int c=3;
write_digits(a,b,c);

Is there an easy way to have a float to array? Then my temperature ic could do something like:
float temperature = getTemp();
somehow put the float into an array
write_digits(temp[0],temp[1],temp[2],temp[3]);

Arrch

#1
Nov 20, 2012, 09:30 pm Last Edit: Nov 20, 2012, 09:40 pm by Arrch Reason: 1
dtostrf()

Although, since you know the precision you want, you could just multiply it by 10^n, where n is how many digits you want, assign it to an int, and send it through atoi().

dhenry

Quote
Then my temperature ic could do something like:


Typically done with divisions:
Code: [Select]

 c=temperature % 10;  temperature / = 10;
 b=temperature % 10;  temperature / = 10;
 a=temperature % 10;


For that to be fast and accurate, you want temperature to be an integer.

So here is the irony of your proposal: you want to convert an integer into float, only to have to convert it back to integer so you can do what you are trying to do.


robtillaart

dhenry is 100% right, integer math is much faster. however the last - % -modulo - is not needed ;)

Code: [Select]

float temperature = getTemp();
int t = (int)temperature;
c= t % 10;  t /= 10;
b=t % 10;   t /= 10;
a=t;  // assume temp = 0..999
write_digits(a,b,c);
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

0miker0

It works! Thanks to all for the help. I'm trying to figure it now since I stick to hardware design and rarely write code. I have no idea what the line t /= 10; is yet but i'll figure it out. I think I have the rest of it in my head.

Mike

Arrch


I have no idea what the line t /= 10; is yet but i'll figure it out. I think I have the rest of it in my head.

Mike


It's shorthand for writing out the full assignment statement:

t = t / 10.

In English, it says take the variable t, divide it by 10 and store it back in t.

Go Up