cancel
Showing results for
Did you mean:
Highlighted
Contributor
4,107 Views
Registered: ‎03-19-2015

## get ap_fixed decimal value

Hello,

how can I get decimal value from ap_fixed?

for example I have:

ap_ufixed<8, 4> my_ufixed;

and I want to save it to two separate variables:

ap_uint<4> my_uint;

ap_uint<4> my_dec;

I know I can do:

my_uint = my_ufixed.to_int()

but how can I get decimal value?

I'm sure there is an easy solution, but I somehow cannot find it.

1 Solution

Accepted Solutions
Highlighted
Explorer
6,787 Views
Registered: ‎07-13-2015

## Re: get ap_fixed decimal value

You should be able to do this:

`ap_uint<4> my_dec = my_ufixed.range(3,0);`

Obviously care must be taken when dealing with signed fixed-point; you'll have to decide how you want to handle that if you ever do need to use it.

If you want the actual decimal value (rather than the decimal value shifted up to become an integer) then the code would be:

```ap_ufixed<4,0> my_dec;
my_dec.range() = my_ufixed.range(3,0);```

For an input of 3.0625 (binary 0011.0001) the first approach would give you a value of 1, whereas the second would give a value of 0.0625.

Highlighted
Explorer
6,788 Views
Registered: ‎07-13-2015

## Re: get ap_fixed decimal value

You should be able to do this:

`ap_uint<4> my_dec = my_ufixed.range(3,0);`

Obviously care must be taken when dealing with signed fixed-point; you'll have to decide how you want to handle that if you ever do need to use it.

If you want the actual decimal value (rather than the decimal value shifted up to become an integer) then the code would be:

```ap_ufixed<4,0> my_dec;
my_dec.range() = my_ufixed.range(3,0);```

For an input of 3.0625 (binary 0011.0001) the first approach would give you a value of 1, whereas the second would give a value of 0.0625.