Go Down

### Topic: Float to array? (Read 1 time)previous topic - next topic

#### 0miker0

##### Nov 20, 2012, 09:25 pm
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 pmLast 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

#2
##### Nov 20, 2012, 09:31 pm
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

#3
##### Nov 20, 2012, 09:40 pm
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..999write_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

#4
##### Nov 21, 2012, 01:36 am
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

#5
##### Nov 21, 2012, 03:09 am

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