Cart | Help
 You are here: NI Home > NI Developer Zone > NI Discussion Forums Select Community English Français Italiano 日本語 한국어 Español 简体中文 繁体中文 Português (BR)

Member
Posts: 57

# Convert int to float

How do I properly convert an int to a float?

I input a number such as 0x42c26163

The final number should be 97.19021

I thought I could just do a cast so I tried this:

int test = 0x42c26163;

float test2 = (float)test;

But test2 comes up 1.120035171 E9

How do I get to the final 97.19021?

In another project I'm working on using C#, the conversion works when I use the BitConverter class.

I'm sure I am just overlooking the obvious, but can someone can help me?

Trusted Enthusiast
Posts: 4,527

# Rif.: Convert int to float

I suppose that int number is really the content of a float read back from raw memory or received from an instrument or on some communication channel. Rebuilding the float number has been discussed a couple of ways in the forums: I can suggest you look at this thread or this other one which give you feasible solutions.

This is basically a reflect of how floating point numbers are stored in memory according to IEEE754 standard, which you may want to take a look at to understand a bit how all the matter is treated.

Using LW/CVI from 3.1 on.

My contributions to the Developer Zone Community
________________________________________
If I have helped you, why not giving a kudos?
Active Participant
Posts: 394

# Re: Convert int to float

You can do:

```int test = 0x42c26163;
float test2 = *(float *)&test;```

Or you could fiddle about with a union.

--
Martin
Certified CVI Developer
Member
Posts: 57

# Re: Convert int to float

Thank You, that works great!

What exactly does *(float *) mean?

Thanks
JW

Member
Posts: 191

# Re: Convert int to float

I use this kind of construction a lot particulary because it allows you to assign integers to bit structures, and retrieve integers from bit structures.

Read it as, "the value that is pointed to, by the float pointer that points to, the integer at this address".

It sounds like the same thing as casting a float, but I think there are compiler issues with getting the right number of bytes assigned.  The pointer trick fixes that.

Member
Posts: 91

# Re: Convert int to float

maybe better definition:Get pointer to memory "&test" a and interpret it as pointer to float "(float *)" then get value from this pointer "*"

Active Participant
Posts: 1,135

# Re: Convert int to float

Cast a pointer to be of type "pointer to float" and then de-reference it.